在Javascript中调用HTML复选框onclick
我在试图找出如何使代码的某一部分正常工作时遇到了一些困难在Javascript中调用HTML复选框onclick,javascript,input,checkbox,label,onclick,Javascript,Input,Checkbox,Label,Onclick,我在试图找出如何使代码的某一部分正常工作时遇到了一些困难 <input type="checkbox" id="check_all_1" name="check_all_1" title="Select All" onclick="selectAll(document.wizard_form, this);"> <label for="check_all_1" onclick="toggleCheckbox('check_all_1'); return false;">S
<input type="checkbox" id="check_all_1" name="check_all_1" title="Select All" onclick="selectAll(document.wizard_form, this);">
<label for="check_all_1" onclick="toggleCheckbox('check_all_1'); return false;">Select All</label>
但是,我希望在标签使复选框被单击时,输入发生onclick。目前,onClick js没有运行。关于如何做到这一点,有什么建议?
我试图将输入的onclick添加到标签的onclick中,但这不起作用
任何建议/解决方案都会很好 如何将
复选框
放入标签
,使标签自动对复选框“点击敏感”,并给复选框一个onchange
事件
<label ..... ><input type="checkbox" onchange="toggleCheckbox(this)" .....>
function toggleCheckbox(element)
{
element.checked = !element.checked;
}
功能切换复选框(元素)
{
element.checked=!element.checked;
}
这将额外捕获用户使用键盘切换复选框,而
onclick
则不会 没有onclick的标签将按照您的预期运行。它改变了输入。您真正想要的是在单击标签时执行selectAll()
,对吗?
然后,仅在单击时将“全选”添加到标签。或者将输入包装到标签中,并仅为标签指定onclick
<label for="check_all_1" onclick="selectAll(document.wizard_form, this);">
<input type="checkbox" id="check_all_1" name="check_all_1" title="Select All">
Select All
</label>
全选
jQuery有一个函数可以实现这一点:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
如果我理解了您的意图,这应该可以满足您的需要。您还可以从HTML中提取事件代码,如下所示:
<input type="checkbox" id="check_all_1" name="check_all_1" title="Select All" />
<label for="check_all_1">Select All</label>
<script>
function selectAll(frmElement, chkElement) {
// ...
}
document.getElementById("check_all_1").onclick = function() {
selectAll(document.wizard_form, this);
}
</script>
全选
功能选择全部(FRMELENT、CHKELENT){
// ...
}
document.getElementById(“check_all_1”).onclick=function(){
选择全部(document.wizard\u表单,此);
}
使用for
属性与将输入放在标签内一样好,但它确实会稍微减少标记+1对于onchange
和我们这些低级键盘用户:-)@Andy E-理论上是的,实际上不是。IE 6和IE 7不能正确处理隐式标签()。首选显式标签。如果将标签放在外部使其可自动单击,则不再需要切换复选框。但是,selectAll是,如果我在您的示例中替换selectAll的toggleCheckbox(此),则它根本不起作用。但是我确实喜欢把标签贴在外面,用onchange代替。在我写这篇文章的时候,我没有意识到toggle
函数是用来切换实际的元素:)@Gert G:的确,当WindowsVista第一次与IE7/Windows桌面设备一起发布时,我已经忘记了这个bug,尽管我对它很熟悉。我记得只是在设置对话框中使用显式标签来避免问题。这样做会导致复选框从未被选中,也不会有任何复选框被选中。选择全部你是正确的我希望在按下标签时执行selectAll()。修复了它,做到了这一点,忘记了这应该是标签部分的id名称。我想将此更改变小,因为它将在每一个旧系统上的几十个位置执行,而这并不能使大规模更改变得简单。这将很容易涵盖几十个位置部分,因为jQuery是为跨大文件和系统的功能而设计的(和大多数脚本语言一样)。但如果您认为您的系统太旧,无法进行这样的更改,那么我想我在这种情况下不会有太大用处。但是,如果您从未使用过jQuery,我建议您在有时间时看一看……它非常适合处理此类行为。
var toggle = false;
$("#INPUTNAMEHERE").click(function() {
$("input[type=checkbox]").attr("checked",!toggle);
toggle = !toggle;
});
<input type="checkbox" id="check_all_1" name="check_all_1" title="Select All" />
<label for="check_all_1">Select All</label>
<script>
function selectAll(frmElement, chkElement) {
// ...
}
document.getElementById("check_all_1").onclick = function() {
selectAll(document.wizard_form, this);
}
</script>