#jquery
#jquery
Вопрос:
<table>
<tr>
<td><input type='checkbox'><span>Text1</span><input type='text'></td>
</tr>
<tr>
<td><input type='checkbox'><span>Text2</span></td>
</tr>
<tr>
<td><input type='checkbox'><span>Text3</span></td>
</tr>
<tr>
<td><input type='radio'><span>None of all</span></td>
</tr>
</table>
Ниже приведен мой код jQuery..
$(':checkbox').live('change',function()
{
$(':radio').prop('checked',!$(this).prop('checked'));
});
$(':radio').live('change',function()
{
$(':checkbox').prop('checked',!$(this).prop('checked'));
});
$('table :text').live('keyup', function() {
var um = $(this).closest('td').find('input');
if ($(this).val().length > 0) {
um.prop('checked', true);
}
else {
um.prop('checked', false);
}
});
Что будет делать приведенный выше код, так это
1. Checkboxes and Radio button are mutually exclusive
2. On change of a textbox automatically the checkbox inside its parent will checked/unchecked.
Но
Меня беспокоит то, что когда я впервые нажимаю переключатель, то, если я изменяю текст в текстовом поле, флажок будет установлен, но переключатель останется непроверенным.. Почему это происходит.. Пожалуйста, помогите мне в этом..
Ответ №1:
Была такая же проблема с плагином автозаполнения, где выбор этого изменял текстовый элемент, но не вызывал событие изменения. Вы могли бы добавить
um.trigger("change");
после вашего if / else
Комментарии:
1. но вы сказали, что либо флажок, либо переключатель установлены. не оба .. но вы выбираете переключатель и снимаете установленный флажок и видите результаты.
2. Событие изменения, похоже, запускается только в том случае, если пользователь что-либо делает сам, а при изменении значения из вашего скрипта этого не происходит. Я вижу это так же, как и вы, и думаю, что это не имеет смысла.
Ответ №2:
самый простой способ — запустить событие изменения при изменении состояния этого флажка:
if ($(this).val().length > 0) {
um.prop('checked', true);
}else{
um.prop('checked', false);
}
um.change();
Ответ №3:
Вместо этого, если изменить, используйте щелчок
$(':checkbox').live('change',function() {
надеюсь, у вас все будет хорошо