Détecte quand l’entrée a un atsortingbut ‘readonly’

Je veux lancer une alerte lorsqu’une entrée a un atsortingbut “readonly”. J’ai essayé ceci:

if($('input').attr('readonly') == 'readonly'){ alert("foo"); } 

Je pense que «si» n’est même pas la meilleure façon de le faire.

Le moyen le plus rapide consiste à utiliser la fonction .is() jQuery.

 if ( $('input').is('[readonly]') ) { } 

utiliser [readonly] comme sélecteur vérifie simplement si l’atsortingbut est défini sur votre élément. Si vous voulez vérifier une valeur, vous pouvez utiliser quelque chose comme ceci:

 if ( $('input').is('[readonly="somevalue"]') ) { } 

Depuis JQuery 1.6, utilisez toujours .prop () Lisez pourquoi ici: http://api.jquery.com/prop/

 if($('input').prop('readonly')){ } 

.prop () peut également être utilisé pour définir la propriété

 $('input').prop('readonly',true); $('input').prop('readonly',false); 

Vous pouvez simplement utiliser le sélecteur d’atsortingbut, puis tester la longueur:

 $('input[readonly]').length == 0 // --> ok $('input[readonly]').length > 0 // --> not ok 

Vérifiez la valeur actuelle de votre atsortingbut “readonly”, si c’est “false” (une chaîne) ou vide (indéfini ou “”) alors ce n’est pas en lecture seule.

 $('input').each(function() { var readonly = $(this).attr("readonly"); if(readonly && readonly.toLowerCase()!=='false') { // this is readonly alert('this is a read only field'); } }); 

Essayez simplement:

 if($('input[readonly="readonly"]')){ alert("foo"); } 

essaye ça:

 if($('input').attr('readonly') == undefined){ alert("foo"); } 

s’il n’y est pas, il sera undefined en js