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 );
            }
        ); 
    };     

ただし、この機能はチェックボックスの 3 回目のクリックでのみ機能します。したがって、問題は、最初のクリックでチェックボックスを切り替えることです。

4

5 に答える 5

1

まず、少なくとも1回クリックされるまで、jQuery.click()イベントをバインドしません。

次に、2つのイベントが発生しているように見えます。

インラインのonclickイベントとjQuery.clickイベントがあります。

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

それはIDのように見えますか?

$('#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
$('input[type=checkbox]').click(function(event){
  $(event.currentTarget).val($(event.currentTarget)[0].checked);
});

イベントオブジェクトを使用して、すべてのチェックボックスでイベントを処理できます。一般的で短い方法は次のとおりです

于 2013-10-23T06:37:47.563 に答える
0

チェックボックスにクリックイベントが1つ必要です。また、 内だけでなく、ドキュメントのすべてのチェックボックスにクリック イベントを追加しています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 に答える