0

我们在复选框上使用 onclick 调用 jQuery 函数。我们希望该复选框切换其下方的所有复选框。这是切换复选框的 HTML:

    <input type="checkbox" id="toggle" name="toggle" class="daxle_cb" value="" onclick="daxleToggleCB('adminForm');" />

这是功能:

    function daxleToggleCB( formName )
    {
        jQuery('#' + formName).find('input[type=checkbox]').prop('checked', this.checked);
    };

但是,这是行不通的。什么工作是这样的:

    function daxleToggleCB( formName) {
        jQuery( ':checkbox[name=toggle]' ).click
        (
            function ()
            {
                jQuery( '#'+formName ).find( 'input[type=checkbox]' ).prop( 'checked', this.checked );
            }
        ); 
    };     

虽然,此功能仅适用于复选框的第三次单击。所以问题是让复选框在第一次点击时切换。

4

5 回答 5

1

首先,在至少单击一次之前,您不会绑定 jQuery.click() 事件。

那么看起来你有两个事件触发。

你有内联 onclick 事件,以及 jQuery.click 事件。

于 2013-02-04T20:15:17.700 回答
1
<input type="checkbox" id="toggle" name="toggle" class="daxle_cb" value="" />

好像是身份证?

$('#toggle').on('change', function() {
    $( this.form ).find('input[type="checkbox"]').prop('checked', this.checked);
})
于 2013-02-04T20:19:27.560 回答
0

您的函数正在使用“onclick”属性调用的函数内部定义点击处理程序。相反,这应该在 Doc-On-Ready 函数内部,以在页面加载时定义点击处理程序,而不是使用“onclick”属性。

$(function(){
$( ':checkbox[name=toggle]' ).click
    (
        function ()
        {
           //Your Code Here
        }
    );  
 });
于 2013-02-04T20:17:05.713 回答
0

你只需要一个点击事件到你的复选框。此外,您将单击事件添加到文档上的所有复选框,而不仅仅是在form. 所以,重写你的函数:

function daxleToggleCB( formName) {

    $('#'+formName+' input:checkbox').click(function(){
        var $inputs = $('#'+formName+' input:checkbox'); 
        if($(this).is(':checked')){                // <-- is current input checked?
           $inputs.prop('checked',this.checked);   // <-- check all
        }
    });
}

然后把它放在你的文档上以调用该函数:

$(document).ready(daxleToggleCB('myForm'));
于 2013-02-04T20:25:22.257 回答
0
$('input[type=checkbox]').click(function(event){
  $(event.currentTarget).val($(event.currentTarget)[0].checked);
});

您可以使用事件对象来处理所有复选框上的事件。这是常见且简短的方法

于 2013-10-23T06:37:47.563 回答