我按照这个例子来捕获单选按钮组的onChange()jQuery事件: JQuery $(#radioButton).change(...) not firing during de-selection
但就我而言,该示例中给出的解决方案无效。我从JSP生成了以下内容:
<input id="object.reportEntity.reportEntityIsPrime1" name="object.reportEntity.reportEntityIsPrime" type="radio" value="Y_YES" checked="checked"/>Prime
<input id="object.reportEntity.reportEntityIsPrime2" name="object.reportEntity.reportEntityIsPrime" type="radio" value="N_NO"/>Not Prime
JS:
$(document).ready(function() {
// Display Alert on Radio Change
$('input[name=object.reportEntity.reportEntityIsPrime]:radio').change(function () {
alert('Radio Button clicked');
});
}
警报未显示。还有,这是错误:
语法错误,无法识别的表达式“输入”
答案 0 :(得分:4)
您应该委派事件。
事件委托允许我们将单个事件监听器附加到 父元素,将为匹配a的所有后代触发 选择器,无论这些后代现在存在还是被添加到 将来
此外,您需要在选择器中添加"
,例如[name=""]
请注意以下内容......
$('body').on('change', 'input[name="object.reportEntity.reportEntityIsPrime"]:radio', function() {
alert('Radio Button clicked');
});
);
功能ready
JSFiddle Link - 工作演示
此外,请务必查看jQuery Understanding Event Delegation docs以获取更多信息
答案 1 :(得分:1)
为您的名字使用引号,如下所示:
$('input[name="object.reportEntity.reportEntityIsPrime"]:radio')
答案 2 :(得分:1)
在选择器字符串中引用name属性。
$(document).ready(function() {
// Display Alert on Radio Change
$('input[name="object.reportEntity.reportEntityIsPrime"]:radio').change(function () {
alert('Radio Button clicked');
});
}