我的桌子和复选框有另一个问题。我已经得到了我的javascript工作,它允许我的复选框检查我何时点击表格单元格内的任何地方。但是,现在复选框本身不起作用。我已经尝试解决这个问题超过一个小时了,无法在任何地方找到答案。这是我的javascript和它正在操作的html的片段:
function tdOnclick(td) {
for(var i = 0; i < td.childNodes.length; i++) {
if(td.childNodes[i].nodeName == "INPUT") {
if(td.childNodes[i].checked) {
td.childNodes[i].checked = false;
td.style.backgroundColor = "#FAF4E3";
} else {
td.childNodes[i].checked = true;
td.style.backgroundColor = "#E1E1E1";
}
}
}
}
这是表格的一段html:
<tr>
<td><center>9:00 - 10:00</center></td>
<td class="tdata" onclick="tdOnclick(this)"><input type="checkbox" name="free" value="mon09"></td>
<td class="tdata" onclick="tdOnclick(this)"><input type="checkbox" name="free" value="tue09"></td>
<td class="tdata" onclick="tdOnclick(this)"><input type="checkbox" name="free" value="wed09"></td>
<td class="tdata" onclick="tdOnclick(this)"><input type="checkbox" name="free" value="thu09"></td>
<td class="tdata" onclick="tdOnclick(this)"><input type="checkbox" name="free" value="fri09"></td>
</tr>
答案 0 :(得分:3)
实际上,我会冒险猜测它有效。您的点击是在复选框,然后onClick事件取消选中它。这是一个想法:
<input type="checkbox" name="free" value="mon09" onClick="this.checked=!this.checked;">
它有点脏,但它成功地忽略了点击。
工作TinkerBin。
答案 1 :(得分:1)
如果我是一名殴打者,我猜你有双击事件。一个用于输入,一个用于父级。基本上你得到两次点击,有效地禁用你的输入。阅读此post。 像这样的概率可行。
<input type="checkbox" name="free" value="fri09" onclick="return false;" />
答案 2 :(得分:1)
您的点击是按预期复选复选框,然后系统会调用您的TD点击代码,您已切换回复选框。
这是一个jsfiddle,其中有一些评论显示正在发生的事情。 http://jsfiddle.net/NujXv/2/
您需要阻止事件从复选框冒泡到TD。我找到了这个搜索jquery函数 - http://api.jquery.com/event.stopPropagation。我在jsfiddle中放了一个注释掉的行可能有用,但我有真正的jquery经验,所以你可能需要调整一下。
答案 3 :(得分:0)
我遇到了同样的问题:
检查某处是否正在调用“preventDefault”,并检查复选框的click函数是否返回true,如果之前存在,则 preventDefault。
我用这样的东西解决它:
$("#recordlist").click( function(e) {
if (e.target.name == 'recordlistitem'){ // When recordlistitem is a checkbox(es)
return true;
}
e.preventDefault();
// other stuff here
}