2012-02-25 11 views
1

私のフォームには多くの入力フィールドがあり、フィールド変更ごとにシリアル化されたフォームデータがサーバーに送信されます。change()イベントがトリガーされる前にチェックボックスをオフにする方法

ここで、チェックボックスを選択しないようにする必要があります("disabled"属性を使用できません。これらのチェックボックスをクリックするとalert()をトリガーする必要があります)。

私はclick()イベントに結合して、それを試してみましたが、change()イベントがclick()前にトリガされ、チェックボックスが選択されたかのようにシリアライズされたデータが送信されるように見えます。

私はmousedown()イベントで試していますが、prop('checked', false)は動作していないようで、実際には逆の効果があります。チェックボックスは常にチェックされて終了します。

http://jsfiddle.net/F8x2X/19/は、どのように私はchange()イベントの前にチェックボックスをオフにしない - ここで

はJsFiddleテストケースですか?

答えて

1

あなたがチェックすべきではないのチェックボックスにクラスを入れて、チェックを行い、変更イベント

Foo: <input type="checkbox" name="foo" class='notcheck' value="1" /><br/> 

<div id="result"></div> 

$(':input').change(function(e){ 
    if($(this).hasClass('notcheck')){ 
     alert('you can\'t check this !'); 
     $(this).removeProp('checked'); 
     return; 

    } 
    var data = $(':input').serialize(); 
    var checked = ''; 

    if ($(this).is(':checked')) { 
     checked = 'Yes'; 
    } else { 
     checked = 'No'; 
    } 

    $('#result').append('Checked: ' + checked + '; Serialized: ' + data + '<br/>'); 
}); 

ここフィドル http://jsfiddle.net/nicolapeluchetti/F8x2X/20/

+0

ご協力いただきありがとうございます。私はあなたの例から 'return;'ステートメントを削除しました。なぜなら、私はまだ他のフォームデータを送信したいからです。今度は 'serialize()'はもうチェックしていませんが、チェックボックスをもう一度クリックすると、他のクリックでもチェックされているように見えます。 - http://jsfiddle.net/F8x2X/22/ – arnaslu

+0

あなたの 'removeProp( 'checked')'を 'prop( 'checked'、false)'に置き換えました。最終結果 - http://jsfiddle.net/F8x2X/25/ – arnaslu

-1

ない私は疑問を得ることを確認して、これがある可能性がありそれ:FIDDLE

var data = $(':input').prop('checked', false).serialize(); 
+0

いいえ、一部のチェックボックスやラジオボックスをチェックすることができないため、すべてを無効にすることはできません。 – arnaslu

関連する問題