0

私は自分のプラグインを書き直していて、過去に発生した問題に対処したいと思っています。

jsFiddleデモ

チェックボックスをクリックしてチェックすると、変更イベントがトリガーされます。コンソールにログインしています。

ただし、左側のボタンを使用した場合、「変更」はトリガーされません。

プラグインを使用すると、ユーザーがチェックボックスまたはラジオボタンを既に持っているコードで動的にチェックしている場合に、この変更を検出できるようにしたいと思います。

何かご意見は?

HTML:

<input type="button" name="check" value="Checkbox" />
<input type="checkbox" name="newsletter" value="true" />​

jQuery:

$(function() {

    // This toggle checks and unckecks the box
    $('input:button').toggle(function() {
        $('input:checkbox').prop("checked", true);
    }, function() {
        $('input:checkbox').prop("checked", false);
    });


    // Detects change of checkbox           
    $('input:checkbox').on("change", function() {
        console.log('checked!');
    });

});​
4

4 に答える 4

2

最も簡単な修正は、change イベントを手動で発生させることです。

$('input:checkbox').prop("checked", true).change();

http://jsfiddle.net/HruGP/1/

編集:を使用する代わりにボタンコードを単純化することもできますtoggle。単に a を使用して、プロパティを現在の値の反対にclick割り当てます。checked

$('input:button').on('click',function() {
    var $checkbox = $('input:checkbox');
    $checkbox.prop('checked', !$checkbox.is(':checked')).change();
});

http://jsfiddle.net/HruGP/3/

于 2012-09-21T18:44:47.713 に答える
0

プロパティを手動で変更する代わりに、チェックボックスでクリックイベントを発生させることができます:

$('input:checkbox').click();
于 2012-09-21T18:46:49.553 に答える
0
$('input:button').click(function(){
    $('input:checkbox').trigger("change");
});

これにより、ボタンをクリックしたときに「変更」イベントをトリガーできます

于 2012-09-21T18:52:23.730 に答える
0

はい、チェックボックスをトリガーします。私はこのようにします(フィドルのコードの最初の部分を置き換えます):

// This toggle checks and unckecks the box
$('input:button').on('click', function(event){
    $('input:checkbox').trigger('click');             
});

もちろん、あなたの目標は基本的に、チェックボックスをオンまたはオフにする方法でボタンを作成することであると仮定します。

于 2012-09-21T18:53:02.707 に答える