2013-08-28 9 views
7

Platzhalter funktioniert nicht in IE-9, daher habe ich den folgenden Code für Platzhalter verwendet.Platzhalter funktioniert nicht

jQuery(function() { 
    debugger; 
    jQuery.support.placeholder = false; 
    test = document.createElement('input'); 
    if ('placeholder' in test) jQuery.support.placeholder = true; 
}); 
// This adds placeholder support to browsers that wouldn't otherwise support it. 
$(function() { 

    if (!$.support.placeholder) { 
     var active = document.activeElement; 
     $(':text').focus(function() { 
      if ($(this).attr('placeholder') != '' && $(this).val() == $(this).attr('placeholder')) { 
       $(this).val('').removeClass('hasPlaceholder'); 
      } 
     }).blur(function() { 
      if ($(this).attr('placeholder') != '' && ($(this).val() == '' || $(this).val() == $(this).attr('placeholder'))) { 
       $(this).val($(this).attr('placeholder')).addClass('hasPlaceholder'); 
      } 
     }); 
     $(':text').blur(); 
     $(active).focus(); 
     $('form:eq(0)').submit(function() { 
      $(':text.hasPlaceholder').val(''); 
     }); 
    } 
}); 

Wenn ich den Wert Test nehme, zeigt es null.How kann ich die Details aller Input-Tag bekommen?

+3

Ort wird helfen, sich auf nicht weniger unterstützt als IE 10 –

+3

@Deepu Sieht aus wie OP weiß, dass, und versucht, eine Abhilfe zu implementieren ... – Teemu

+0

@Deepu OPs Code ist ein Shim für "Platzhalter" -Support ... –

Antwort

1

ich denke, das Sie Attribut Halter

if ($.browser.msie) { 
        $("input").each(function() { 
         if (IsNull($(this).val()) && $(this).attr("placeholder") != "") { 
          $(this).val($(this).attr("placeholder")).addClass('hasPlaceHolder'); 
          $(this).keypress(function() { 
           if ($(this).hasClass('hasPlaceHolder')) $(this).val("").removeClass('hasPlaceHolder'); 
          }); 
          $(this).blur(function() { 
           if ($(this).val() == "") $(this).val($(this).attr("placeholder")).addClass('hasPlaceHolder'); 
          }); 
         } 
        }); 
       } 
-3

HTML:

<input type='text' id='your_field' value='Enter value'/> 

jQuery:

$(document).ready(function(){ 
    $("#your_field").on('focusout',function(){ 
     if($("#your_field").val() == ''){ 
      $("#your_field").val('Enter value'); 
     } 
    }); 
    $("#your_field").on('focus',function(){ 
     if($("#your_field").val() == 'Enter value'){ 
      $("#your_field").val(''); 
     } 
    }); 
}); 

Siehe DEMO

Überprüfen Sie auch, wenn das Formular weil gebucht wird, wenn der Benutzer das Feld das Formular sendet dann Enter value ohne Eingabe wird Als Validation des Felds werden Sie also entweder auf der Clientseite oder beim Einreichen des Formulars auf der Serverseite einchecken.

+0

Können die Downvotters die Demo überprüfen? –

+0

Ich tippte "Wert eingeben" und klickte auf das Textfeld, und mein Text verschwand. – Doorknob

+6

Was bei diesem Ansatz schrecklich ist, ist Folgendes: Wenn der Benutzer das Formular abschickt, ohne die falschen Platzhalterwerte zu ändern, wird es im Gegensatz zum Platzhalter, der leere Werte übermittelt, mit den Standarddaten übergeben. Sie sollten darauf hinweisen, dass Neulinge möglicherweise Ihren 100% ig vollkommen gültigen Code verwenden, aber immer noch nicht herausfinden können, warum der Platzhaltertext manchmal auf ihren Formularen veröffentlicht wird! –

0

ich auf meinem Handy bin so ist dies hart, aber wirklich brauchen Sie

JQuery.support.placeholder = typeof 'placeholder' in test !== 'undefined' 

zu tun, weil null bedeutet, dass es keinen Platzhalter Wert ist, aber es gibt Platzhalter Unterstützung

Von dem, was ich Verstehen Sie sagen, dass der Platzhalter im Test Null zurückgibt

-1

Ich schlage vor, dass Sie dies nicht selbst schreiben und für eine Standardlösung gehen. Hier gibt es mehr Komplexität, die Sie wahrscheinlich selbst in Angriff nehmen möchten, wenn Sie nur ältere Browser unterstützen möchten.

Zum Beispiel, hier ist die Beilage Ich verwende (und das auf http://html5please.com empfohlen): https://github.com/mathiasbynens/jquery-placeholder/blob/master/jquery.placeholder.js

Gehen Sie voran und den Code lesen. Dies sind nur einige Fragen, die Sie müssen im Auge haben, wenn eine solche Shim schreiben:

  • erfassen die Browser-Unterstützung,
  • im Auge behalten, wenn die Box enthält die reale Eingang oder nicht;
  • eine Klasse hinzufügen, verschiedene Textfarbe für den Platzhalter zu ermöglichen,
  • klar die Platzhalter vor dem Absenden des Formulars,
  • klar die Platzhalter, wenn die Seite neu zu laden,
  • Griff textarea,
  • Griff input[type=password]

Und das ist wahrscheinlich noch nicht alles. (Die Bibliothek I verknüpft haben hakt auch in jQuery, um .val() Rückkehr '' zu machen, wenn es in der Box keine wirkliche Eingang ist


Es gibt auch eine andere Shim, die einen völlig anderen Ansatz verwendet. https://github.com/parndt/jquery-html5-placeholder-shim/blob/master/jquery.html5-placeholder-shim.js

Diese Bibliothek berührt nicht den tatsächlichen Wert der Eingabe, sondern zeigt stattdessen direkt ein Element an.

Verwandte Themen