it-swarm.com.de

jQuery Mobile So prüfen Sie, ob die Schaltfläche deaktiviert ist?

Ich deaktiviere die Schaltfläche auf meiner jQuery Mobile-Webseite wie folgt:

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

und ich kann es mit aktivieren

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

Aber wie überprüfe ich, ob die Schaltfläche deaktiviert oder aktiviert ist? 

Dieser Befehl gibt "undefined":

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

Einige Ideen?

Edit: Ich finde heraus, dass $ ("# deliveryNext"). Button ('disable') nur den Style auf dem Button ändert. Das Klicken funktioniert gut, nachdem ich den Button deaktiviert habe. attr ('disabled', 'disabled') aber wenn ich dann .attr ('disabled') teste, bekomme ich undefiniert ... 

Edit2: mehr zu meinem "echten" Problem unter Wie deaktiviere ich einen Link-Button in jQuery Mobile?

51
RickardP

versuchen Sie den :is-Selektor 

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

Verwenden Sie stattdessen .prop:

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

Versuchen

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

Der folgende Code funktioniert für mich:

<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

Ich hatte das gleiche Problem und stellte fest, dass dies funktioniert:

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

Wenn Sie undefiniert sind, können Sie auch die if-Bedingung verwenden.

Wenn Sie undefined auswerten, wird false zurückgegeben.

7
Mina Gabriel

http://jsfiddle.net/8gfYZ/11/ Hier klicken ..

$(function(){

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

Konfrontiert mit demselben Problem, wenn Sie versuchen zu prüfen, ob eine Schaltfläche deaktiviert ist. Ich habe verschiedene Ansätze ausprobiert, z. B. btn.disabled, .is(':disabled'), .attr('disabled'), .prop('disabled'). Aber niemand arbeitet für mich. 

Einige, zum Beispiel .disabled oder .is(':disabled'), gaben undefined zurück und andere wie .attr('disabled') lieferten das falsche Ergebnis - false, wenn die Schaltfläche tatsächlich deaktiviert wurde.

Aber nur eine Technik funktioniert für mich :.is('[disabled]')(mit eckigen Klammern). 

Um festzustellen, ob eine Schaltfläche deaktiviert ist, versuchen Sie Folgendes:

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

Versuchen

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

Um zu sehen, welche Optionen für eine jQuery-Benutzeroberfläche eingestellt wurden, verwenden Sie:

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

Um zu überprüfen, ob es deaktiviert ist, können Sie Folgendes verwenden:

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

Wenn die Schaltfläche zuvor noch nicht explizit aktiviert oder deaktiviert wurde, gibt der obige Aufruf leider nur das Schaltflächenobjekt zurück. Sie müssen also zunächst prüfen, ob das Optionsobjekt die Eigenschaft 'disabled' enthält.

Um zu bestimmen, ob eine Schaltfläche deaktiviert ist, können Sie dies folgendermaßen tun:

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

Was für mich funktionierte, war folgendes:

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

Aber ich mag Tomwadleys Antwort viel mehr.

Trotzdem funktioniert der is (': disabled') Code für mich nicht, was die beste Version sein sollte. Weiß nicht, warum es nicht funktioniert. :-(

0
John Archer

Sie können die Funktion jQuery.is() zusammen mit :disabled selector verwenden:

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

$ ('# StartButton: deaktiviert') .. 

Dann prüfen Sie, ob es undefiniert ist.

0
Michael Wright