jquery: obtenir la valeur de l'attribut personnalisé
html5 supporte l'attribut placeholder sur input[type=text]
éléments, mais je dois gérer les navigateurs non conformes. Je sais qu'il y a un millier de plugins là-bas pour placeholder mais je voudrais créer le 1001st.
je suis en mesure d'obtenir une poignée sur l' input[placeholder]
élément, mais en essayant d'obtenir la valeur de l'attribut placeholder est de retour indéfini - $("input[placeholder]").attr("placeholder")
.
j'utilise jquery 1.6.2.
Ici jsfiddle. J'ai modifié le code pour travailler dans un navigateur compatible html5 uniquement pour des tests.
html
<input type="text" name="email" size="10" placeholder="EMAIL ADDRESS">
jquery
function SupportsInputPlaceholder() {
var i = document.createElement("input");
return "placeholder" in i;
}
$(document).ready(function(){
if(!SupportsInputPlaceholder()) {
//set initial value to placeholder attribute
$("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
2 réponses
Vous avez besoin d'une certaine forme d'itération ici, comme 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 aussi faire ceci en passant la fonction avec l'événement onclick
<a onlick="getColor(this);" color="red">
<script type="text/javascript">
function getColor(el)
{
color = $(el).attr('color');
alert(color);
}
</script>