2016-10-31 2 views
0

У меня есть функция JQuery, чтобы снять отметку радиоприемников (с идентификатором #radio_range_ [любой]) и проверить радио (с идентификатором #an), когда я начинаю вводить в текстовом поле (ID #custom_range_duration)JQuery повторите действия по изменению поля

$('#custom_range_duration').bind('keypress keyup blur', function() { 
    if ($('#custom_range_duration').val().length != 0){ 
    $('input[id^="radio_range_"]').attr('checked', false); 
    $('#an').attr('checked', true); 
    } 
}); 

Когда я загружаю страницу и начинаю печатать в поле, #radio_range_ unchecks, # и успешно проверяет. Однако, когда я снова проверю #radio_range_ range и начинаю вводить в поле - тогда #radio_range_ отменяет, но #an не проверяет снова.

Что я делаю неправильно?

+0

Можете ли вы сделать стек фрагмент, содержащий HTML и демонстрирует эту проблему? BTW, я рекомендую использовать класс вместо селектора префикса ID. – Barmar

ответ

0

Причина, по которой не работает во второй раз, потому что это Jquery проверяет свойства, и вы изменяете атрибут, есть разница.

Вы хотите всегда использовать prop() при изменении отмеченного состояния программно

$('#custom_range_duration').bind('keypress keyup blur', function() { 
    if ($('#custom_range_duration').val().length != 0) { 
     $('input[id^="radio_range_"]').prop('checked', false); 
     $('#an').prop('checked', true); 
    } 
}); 
+0

работает как шарм. спасибо @adeneo –

Смежные вопросы