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

35
demandé sur bflemi3 2011-08-24 18:50:03

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");
});
43
répondu Dennis 2013-09-02 16:53:11

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> 
1
répondu Prince Patel 2017-03-10 13:15:27