it-roy-ru.com

jQuery Mobile, как проверить, если кнопка отключена?

Я отключаю эту кнопку на своей веб-странице jQuery Mobile:

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

и я могу включить его с

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

Но как я могу проверить, выключена ли кнопка или включена? 

Эта команда дает "undefined":

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

Некоторые идеи?

Правка: я обнаружил, что $ ("# deliveryNext"). Button ('отключить') только швы, чтобы изменить стиль кнопки, после нажатия работает нормально, поэтому мне нужно отключить кнопку несколько, как ... я попробовал. attr («отключен», «отключен»), но когда я проверяю .attr («отключен»), я получаю неопределенное ... 

Edit2: больше о моей "реальной" проблеме в Как отключить кнопку ссылки в jQuery Mobile?

51
RickardP

попробуйте :is селектор 

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

Вместо этого используйте .prop:

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

Пытаться

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

У меня работает следующий код:

<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

У меня была такая же проблема, и я обнаружил, что это работает:

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

Если это дает вам неопределенное значение, вы также можете использовать условие if.

Когда вы оцениваете undefined, он вернет false.

7
Mina Gabriel

http://jsfiddle.net/8gfYZ/11/ Проверьте здесь ..

$(function(){

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

Столкнулся с той же проблемой при попытке проверить, отключена ли кнопка. Я пробовал различные подходы, такие как btn.disabled, .is(':disabled'), .attr('disabled'), .prop('disabled'). Но никто не работает для меня. 

Некоторые, например .disabled или .is(':disabled'), возвращали undefined, а другие, например .attr('disabled'), возвращали неверный результат - false, когда кнопка была фактически отключена.

Но только одна техника работает для меня :.is('[disabled]')(с квадратными скобками). 

Чтобы определить, отключена ли кнопка, попробуйте это:

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

Пытаться

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

Чтобы увидеть, какие параметры были установлены для кнопки jQuery UI используйте:

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

Чтобы проверить, отключен ли он, вы можете использовать:

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

К сожалению, если кнопка ранее не была явно включена или отключена, приведенный выше вызов просто вернет сам объект кнопки, поэтому вам необходимо сначала проверить, содержит ли объект options свойство 'disabled'.

Таким образом, чтобы определить, отключена ли кнопка, вы можете сделать это следующим образом:

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

То, что работало для меня, было этим:

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

Но мне больше нравится ответ Томвадли.

Тем не менее, код is (': disabled') также не работает для меня, что должно быть лучшей версией. Не знаю, почему это не работает. :-(

0
John Archer

Вы можете использовать jQuery.is() function вместе с :disabled selector:

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

$ ('# StartButton: отключено') .. 

Затем проверьте, не определено ли оно.

0
Michael Wright