2011-06-22 15 views
47

wyłączyć przycisk podobnego na mojej stronie jQuery mobile:jQuery Mobile, jak sprawdzić, czy przycisk jest wyłączony?

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

i mogę go włączyć z

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

Ale jak mogę sprawdzić, czy przycisk jest wyłączony lub włączony?

Komenda ta daje "nieokreślone":

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

Niektóre pomysły?

Edytuj: dowiaduję się, że $ ("# deliveryNext"). Przycisk ("wyłącz") tylko szwy, aby zmienić styl na przycisku, kliknięcie działa dobrze po tym, więc trzeba wyłączyć przycisk, jak również. . próbowałem .attr ('wyłączone', 'wyłączone'), ale kiedy potem testować .attr ('wyłączone') i dostać niezdefiniowane ...

Edit2: więcej na temat mojego "prawdziwego" problem w How to disable a link button in jQuery Mobile?

Odpowiedz

20

Zastosowanie .prop zamiast:

$('#deliveryNext').prop('disabled') 
+0

ów daje mi ten sam wynik, jeśli ja piszę to w Firebug. console.log ($ ('# deliveryNext') prop ('disabled')) otrzymuję komunikat "undefined" – RickardP

+0

Nieparzysty, powinien działać: http://jsfiddle.net/8gfYZ/ – kinakuta

+0

Działa dla mnie w FireFox. – tponthieux

9

Spróbuj

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

Poniższy kod działa dla mnie:

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

Daje mi fałsz, ale przycisk jest wyłączony za pomocą przycisku $ ('# deliveryNext'). ("Wyłącz") – RickardP

+0

Czy element ma wyłączony znacznik, kiedy go wyłącza? (Możesz sprawdzić przez firebug) – lancscoder

0

$ ('# StartButton: wyłączone') ..

Następnie sprawdź, czy jest niezdefiniowany.

99

try :is selektor

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

OP, proszę przyjąć tę odpowiedź !! – maartenmachiels

+3

Zamiast tego użyj ".prop (" disabled ")". – tponthieux

+0

@tponthieux Czy mógłbyś rozwinąć? – BartoszKP

2

Aby sprawdzić, jakie opcje zostały ustawione na jQuery UI przycisk użytku:

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

aby sprawdzić, czy jest wyłączona można użyć:

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

Niestety, jeśli przycisk nie został wyjaśniony itly włączone lub wyłączone wcześniej, powyższe wywołanie po prostu zwróci obiekt button sam, więc najpierw musisz sprawdzić, czy obiekt options zawiera właściwość "disabled".

Tak, aby ustalić, czy przycisk jest wyłączony można zrobić to tak:

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

Co pracował dla mnie było to:

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

Ale lubię tomwadley za odpowiedź dużo więcej.

Niemniej kod is (": disabled") również nie działa dla mnie, co powinno być najlepszą wersją. Nie wiem, dlaczego to nie działa.:-(

4

Spróbuj

$("#deliveryNext").is('[disabled]'); 
+0

Dlaczego ta praca i inne techniki nie działają? – markpsmith

6

miałem ten sam problem i znalazłem to działa.

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

Jeśli ta daje niezdefiniowany następnie można użyć if warunku także

Podczas oceny undefined wróci false.

5

http://jsfiddle.net/8gfYZ/11/ Sprawdź tutaj ..

$(function(){ 

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

obliczu tego samego problemu, próbując sprawdzić, czy przycisk jest wyłączony. Próbowałem różnych podejść, takich jak btn.disabled, .is(':disabled'), .attr('disabled'), .prop('disabled'). Ale nikt nie pracuje dla mnie.

Niektórzy, na przykład .disabled lub .is(':disabled') powrócił undefined i innych podobnych .attr('disabled') wrócił zły wynik - false gdy przycisk został faktycznie wyłączona.

Ale tylko jedna technika działa na mnie: .is('[disabled]') (z nawiasy kwadratowe).

Tak, aby ustalić, czy przycisk jest wyłączony spróbuj tego:

$("#myButton").is('[disabled]'); 
Powiązane problemy