我的机智就此结束了。
任何人都可以看到这条线有什么问题吗?由于某种原因,单击复选框不会触发该函数,但调用函数工作正常(如果我将精确的“onclick”属性复制到复选框的标签上,它可以正常工作)。
<input type="checkbox" name="match_35_0" id="match_35_0d" value="d0" onclick="checkSwap(document.page_form.match_35_0d, document.page_form.match_35_0)"></input>
如果有人能够明白为什么它不起作用,我会非常感激。
谢谢!
编辑:由于有几个人问,这里是checkSwap函数(它只是抛出一个警报,所以我可以在添加任何代码之前看到我的onclicks正常工作):function checkSwap(radioid, groupid) {
alert("radio: " + radioid + " group: " + groupid);}
以下是有问题的复选框所在的表格单元格的整个示例(对于格式化道歉,代码示例似乎不想接受我的换行符):
<td><label onclick="checkSwap(document.page_form.match_34_0d,document.page_form.match_34_0)" for="match_34_0">N</label><input type="checkbox" name="match_34_0" id="match_34_0d" value="d1" onclick="checkSwap(document.page_form.match_34_0d, document.page_form.match_34_0)"></input></td>
编辑:好的,取消一个将复选框组限制为1复选框的单独功能是问题。
执行限制的代码是为每个复选框设置onclick属性,这显然会覆盖标记集属性。我必须弄清楚如何破解它。
答案 0 :(得分:1)
此语法
document.page_form.match_35_0d
实际上在page_form
的名称的表单中搜索<{>> match_35_0d
的输入元素。但实际上您已将其设置为复选框的 id ,其中定义了onclick。
您可以通过onclick中的以下调用解决您的问题:
checkSwap(this, document.page_form.match_35_0)
顺便说一句,复选框与radiobutton不同,你实际上并没有将ID传递给函数,而是传递整个元素。将您的功能重写为
function checkSwap(checkbox, group) {
var checkboxId = checkbox.id;
for (var i = 0; i < group.length; i++) {
var element = group[i];
var elementId = element.id;
// ...
}
// ...
}
要按ID获取元素,只需使用Document#getElementById()
。
var element = document.getElementById('someId');
答案 1 :(得分:1)
如果已经定义了JQuery ready方法,则Checkbox onclick事件不起作用。如果在准备好的内部添加Jquery单击事件,则可以触发事件。不确定这是否是IE问题..?
答案 2 :(得分:0)
此功能确实触发 - 在萤火虫中检查
<input type="checkbox" name="match_35_0" id="match_35_0d" value="d0" onclick="alert('55')"></input>
你必须检查'checkSwap'
答案 3 :(得分:0)
如果您已经拥有Jquery的就绪功能,那么ckeckbox的Onclick属性将不会触发。您必须在Jquery中添加click事件。只有这样才有效 如下。我不知道原因。
$('#cbFinalAttest').click(function (event) {
...
}
答案 4 :(得分:-1)
将this
传递给函数会更容易,然后参数将是对调用函数的元素的引用。所以你可以这样做:
function checkSwap(self){
alert(self.id);
}
编辑:此外,document.page_form.match_35_0.id
将获取ID,而不是您拥有它的方式。