jquery: obtient la valeur de l’atsortingbut personnalisé

html5 prend en charge l’atsortingbut d’espace réservé sur les éléments input[type=text] , mais je dois gérer des navigateurs non conformes. Je sais qu’il existe un millier de plugins pour l’espace réservé, mais j’aimerais créer le 1001e.

Je peux obtenir un descripteur de l’élément input[placeholder] mais essayer d’obtenir la valeur de l’atsortingbut placeholder renvoie undefined – $("input[placeholder]").attr("placeholder") .

J’utilise jQuery 1.6.2.

Voici le jsfiddle . J’ai modifié le code pour qu’il fonctionne dans un navigateur compatible html5 uniquement à des fins de test.

html

  

jquery

 function SupportsInputPlaceholder() { var i = document.createElement("input"); return "placeholder" in i; } $(document).ready(function(){ if(!SupportsInputPlaceholder()) { //set initial value to placeholder atsortingbute $("input[placeholder]").val($("input[placeholder]").attr("placeholder")); //create event handlers for focus and blur $("input[placeholder]").focus(function() { if($(this).val() == $(this).attr("placeholder")) { $(this).val(""); } }).blur(function() { if($(this).val() == "") { $(this).val($(this).attr("placeholder")); } }); } }); 

Merci pour toute aide, B

Vous avez besoin d’une certaine forme d’itération ici, car val (sauf lorsqu’il est appelé avec une fonction) ne fonctionne que sur le premier élément:

 $("input[placeholder]").val($("input[placeholder]").attr("placeholder")); 

devrait être:

 $("input[placeholder]").each( function () { $(this).val( $(this).attr("placeholder") ); }); 

ou

 $("input[placeholder]").val(function() { return $(this).attr("placeholder"); }); 

Vous pouvez également le faire en passant une fonction à l’événement onclick