0

ここで見つけた回答の助けを借りて、少なくとも2つのチェックボックスがチェックされなくなるまで、送信ボタンを無効にし、クリックすると警告メッセージを送信しようとします。

私が間違っていることは何ですか?

var selected = $('#frmCompare :checkbox:checked').length;

function verifCompare() {
    if (selected >= 2) {
        //good
        $('#frmCompare').submit();
    } else {
        //bad
        alert('Veuillez selectionner au moins 2 produits à comparer...');
        return false
    }
}

$(document).ready(function () {
    $('#btnCompare').attr('disabled', 'disabled');
    $('#frmCompare :checkbox').change(function () {
        //alert(selected);
        if (selected >= 2) {
            $('#btnCompare').attr('enabled');
        }
    });
});

この時点では、アラート メッセージのみが機能します。

フィドル

編集:フィドルを追加

4

3 に答える 3

3

enabledHTML には属性がありません。

$('#btnCompare').prop('disabled', selected < 2);

selectedまた、 at everyの値を再計算する必要がありchangeます。ページの読み込み時に設定された値をそのまま使用することはできません。

于 2013-05-30T14:03:24.950 に答える
1

スクリプトが最初に解析されるときに、チェックされたチェックボックスの数を一度だけ初期化します。カウントは後で再計算されません。この行:

var selected = $('#frmCompare :checkbox:checked').length;

外部ではなく、検証関数の内部にある必要があります。

于 2013-05-30T14:04:43.250 に答える
1

コードを次のように変更する必要があります

$('#frmCompare :checkbox').change(function(){

  //update selected variable
  selected = $('#frmCompare :checkbox:checked').length

  if (selected >= 2) {
     $('#btnCompare').attr('enabled');
  }
});
于 2013-05-30T14:05:20.697 に答える