我有一个带有日期选择和单选按钮的表单,如下所示
<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中),但它没有用。
任何人都对我如何毫不客气地解决这个问题有任何想法。
Jsfiddle
最佳答案
您的输入选择器使用的是^=
,它与值的确切START匹配,但是您的值并不以该值开头。我建议将其更改为*=
,以便在ID内的任何位置进行搜索。 Reference jQuery Docs
其次,您忘记了该选择器的'
结束语。
这解决了激活选择器的问题。现在,您只需要触发一个通用功能即可检查日期和广播(在同一行中)是否都已填写。
Fixed JSFiddle
选择日期时,这会激活checkProtocol()
功能,并将输入文本元素传递给它。
$(this).datepicker({
onSelect: function() { checkProtocol( this ) }
});
当已为该组选择单选按钮并激活该元素作为参数时,这将激活
checkProtocol()
功能。$("input[id*='protocol_protocol']").change( function() { checkProtocol(this) } );