在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>