Сбой флажка JQuery (почему он не изменил «проверенный» атрибут?) - PullRequest
2 голосов
/ 23 февраля 2011

Я хочу включить / отключить для формы, основываясь на щелчке пользователя на флажке редактирования. Простые вещи

Пока работает отключающий компонент, стандартное поведение флажка переопределяется. Я даже пытался вернуть attr («проверено», правда), чтобы заставить его работать, но не играли в кости. Я предполагаю, что это может быть связано с моей разметкой (установка флажка в div). Не могу понять это.

$(function(){
$('#target :input').attr('disabled','disabled');

$(':checkbox').toggle(
    function(){
        $(this).attr("checked",true);
        $('#target :input').attr('disabled',false);

    },
    function(){
        $('#target:input').attr('disabled','disabled');         
        $(this).attr("checked", false);


});
});

Спасибо, Брендан

Ответы [ 6 ]

4 голосов
/ 24 февраля 2011

Как заметил @ Devbook.co.uk, метод toggle-event [документы] нарушает поведение по умолчанию для флажка.

Одним из решений является использование события .change() вместе со свойством this.checked флажка.

Пример: http://jsfiddle.net/Efpr6/

$('#target :input').attr('disabled', 'disabled');

$('#toggler').change(function() {
    $('#target :input').attr('disabled', !this.checked);
});
3 голосов
/ 23 февраля 2011

Попробуйте $(this).attr('checked', 'checked'), чтобы проверить его, и $(this).removeAttr('checked'), чтобы снять его.

1 голос
/ 23 февраля 2011

Думаю, я нашел ваше решение - взгляните на этот вопрос

Событие переключения Jquery связано со значением флажка

Кажется, переключение jQuery не очень хорошо работает с флажками.

1 голос
/ 23 февраля 2011

Да, атрибуты, которые, по вашему мнению, должны иметь значение true или false, как правило, имеют имя атрибута, используемое в качестве значения, например:

checked="checked"
disabled="disabled"

Некоторые браузеры будут принимать check = "true", но это определенно не лучшая практика.

1 голос
/ 23 февраля 2011

Изменить $(this).attr("checked",true); на $(this).attr("checked","checked");

0 голосов
/ 14 декабря 2013

Попробуйте это:

$(this).prop('checked', false);
$(this).prop('checked', true);

См. Это: http://bugs.jquery.com/ticket/10248

это сработало для моего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...