我有一个带有日期选择和单选按钮的表单,如下所示

<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) } );

09-18 08:25