У меня есть форма с выбором даты в jquery и переключателями, как показано ниже.
<table>
<tr>
<td>
<input type="text" id="5506_datepick_1"></input>
</td>
<td>
<input id="5506_protocol_protocol_1" type="radio" value="protocol 1" name="5506[protocol]">pp1</input>
<input id="5506_protocol_protocol_2" type="radio" value="protocol 2" name="5506[protocol]">pp2</input>
</td>
</tr>
<tr>
<td>
<input type="text" id="5507_datepick_2"></input>
</td>
<td>
<input id="5507_protocol_protocol_1" type="radio" value="protocol 1" name="5507[protocol]">pp1</input>
<input id="5507_protocol_protocol_2" type="radio" value="protocol 2" name="5507[protocol]">pp2</input>
</td>
</tr>
</table>
Всякий раз, когда кто-то выбирает оба входа в каждой строке (например: радио для 5506 * и выбор даты для 5506 *), я хочу иметь возможность запускать функцию независимо от порядка выбора. Я попробовал следующее (в Js Fiddle), но это бесполезно. У кого-нибудь есть идеи о том, как я могу сделать это ненавязчиво.
Селектор ввода использует ^=
, который соответствует точному СТАРТу значения, но ваши значения не начинаются с этого значения. Я предлагаю изменить это на *=
поэтому он ищет в любом месте идентификатора. Справочные документы jQuery
Во- вторых, вы забываете закрывающую '
смету для этого селектора.
Это устраняет проблемы с селектором для активации. Теперь вам просто нужно вызвать общую функцию, чтобы проверить, были ли заполнены и дата, и радио (в одной строке).
Это активирует checkProtocol()
когда выбрана дата, и передает входной текстовый элемент вместе с ней.
$(this).datepicker({
onSelect: function() { checkProtocol( this ) }
});
Это активирует checkProtocol()
когда для этой группы выбран переключатель, и передает этот элемент в качестве параметра.
$("input[id*='protocol_protocol']").change( function() { checkProtocol(this) } );