web-dev-qa-db-fra.com

jQuery Mobile comment vérifier si le bouton est désactivé?

Je désactive le bouton comme celui-ci sur ma page Web jQuery Mobile:

$(document).ready(function() {
    $("#deliveryNext").button();
    $("#deliveryNext").button('disable');
});

et je peux l'activer avec

$("#deliveryNext").button('enable');

Mais comment puis-je vérifier si le bouton est désactivé ou activé? 

Cette commande donne "undefined":

$("#deliveryNext").attr('disabled')

Quelques idées?

Edit: je découvre que $ ("# deliveryNext"). Button ('disable') ne permet que de changer le style du bouton, le clic fonctionne bien après, donc je dois désactiver le bouton de la même manière .. j’ai essayé. attr ('disabled', 'disabled') mais quand je teste ensuite .attr ('disabled') je deviens indéfini ... 

Edit2: plus d'informations sur mon "vrai" problème sur Comment désactiver un bouton de lien dans jQuery Mobile?

51
RickardP

essayez le sélecteur :is 

$("#deliveryNext").is(":disabled")
113
Vivek

Utilisez .prop à la place:

$('#deliveryNext').prop('disabled')
22
kinakuta

Essayer

$("#deliveryNext").is(":disabled")

Le code suivant fonctionne pour moi:

<script type="text/javascript">
    $(document).ready(function () {
        $("#testButton").button();
        $("#testButton").button('disable');
        alert($('#testButton').is(':disabled'));
    });
</script>
<p>
    <button id="testButton">Testing</button>
</p>
9
lancscoder

J'ai eu le même problème et j'ai constaté que cela fonctionne:

if ($("#deliveryNext").attr('disabled')) {
  // do sth if disabled
} else {
  // do sth if enabled 
}

Si cela vous donne undefined, vous pouvez également utiliser la condition if.

Lorsque vous évaluez undefined, il retournera false.

7
Mina Gabriel

http://jsfiddle.net/8gfYZ/11/ Voir ici.

$(function(){

    $('#check').click(function(){
        if( $('#myButton').prop('disabled') ) { 
            alert('disabled'); 
            $('#myButton').prop('disabled',false);
        } 
        else {
            alert('enabled');
            $('#myButton').prop('disabled',true);
        }
    });
});
5
jackkorbin

Face au même problème lorsque vous essayez de vérifier si un bouton est désactivé. J'ai essayé diverses approches, telles que btn.disabled, .is(':disabled'), .attr('disabled'), .prop('disabled'). Mais personne ne travaille pour moi. 

Certains, par exemple .disabled ou .is(':disabled') ont retourné undefined et d'autres comme .attr('disabled') ont renvoyé un résultat incorrect - false lorsque le bouton a été désactivé.

Mais une seule technique fonctionne pour moi :.is('[disabled]')(avec des crochets). 

Donc, pour déterminer si un bouton est désactivé, essayez ceci:

$("#myButton").is('[disabled]');
5
ross.zhalivtsiv

Essayer

$("#deliveryNext").is('[disabled]');
4
Kaido

Pour voir quelles options ont été définies sur un bouton jQuery UI , utilisez:

$("#deliveryNext").button('option')

Pour vérifier s'il est désactivé, vous pouvez utiliser:

$("#deliveryNext").button('option', 'disabled')

Malheureusement, si le bouton n'a pas encore été explicitement activé ou désactivé, l'appel ci-dessus renverra simplement l'objet bouton. Vous devez donc d'abord vérifier si l'objet options contient la propriété 'disabled'.

Donc, pour déterminer si un bouton est désactivé, vous pouvez le faire comme ceci:

$("#deliveryNext").button('option').disabled != undefined && $("#deliveryNext").button('option', 'disabled')
2
Tom Wadley

Ce qui a fonctionné pour moi a été ceci:

$("#testButton").hasClass('ui-state-disabled')

Mais j'aime beaucoup la réponse de Tomwadley.

Néanmoins, le code is (': disabled') ne fonctionne pas non plus pour moi, qui devrait être la meilleure version. Je ne sais pas pourquoi ça ne marche pas. :-(

0
John Archer

Vous pouvez utiliser jQuery.is() function avec :disabled selector:

$("#savematerial").is(":disabled")
0
Siva Ragu

$ ('# StartButton: disabled') .. 

Ensuite, vérifiez si ce n'est pas défini.

0
Michael Wright