1

フォームの 3 つの選択フィールドを検証しようとしています。アプリケーションはホッケー用のスコア管理アプリケーションであり、スコアリング プレイを記録しています。A は得点者、B は主要なアシスト、C は補助的なアシストです。次の検証ルールがあります。

  1. A を空にすることはできません
  2. B が A または C と等しくなることはありません
  3. C は A または B と等しくありません
  4. B が空の場合、C は空でなければなりません

つまり、A、AB、または ABC は有効な組み合わせですが、すべてが一意である必要があります。無効化されたブートストラップ class/html 属性を送信ボタンに適用して、送信ボタンを無効にしています。

私の実際のコードでは、A = awayGoal、B = awayPAssist、C = awaySAssist

現在、次のjQueryコードがあります。

var awayGoal = $("#awayGoal");
var awayPAssist = $("#awayPAssist");
var awaySAssist = $("#awaySAssist");
var awayGSubmit = $("#submitAwayScore");

$('#awayScore select').change(function() {
if(awayGoal.val() != "" && awayPAssist.val() != awayGoal.val() && awayGoal.val() != awaySAssist.val()) {
    if(awayPAssist.val() != "" && awaySAssist.val() != "") {
        awayGSubmit.disableButton();
    }
    awayGSubmit.clearDisabled();
}
else {
    awayGSubmit.disableButton();
}
});

これにより、一意の A + C の組み合わせは通過できますが、同じ A + C は通過しません。各 select 要素には、ゲームに参加しているプレイヤーの数が読み込まれています。optionN/A と呼ばれる静的オプションである最初のものもあります。そのコードは次のとおりです。<option value="">N/A</option>これにより、管理者は、存在しない場合に空のプライマリおよびセカンダリ アシストを持つことができます。

jQueryを使い始めたばかりなので、より効率的にする方法は大歓迎です。前もって感謝します。

4

2 に答える 2

1

3 つのケースと 3 つのアイテムしかないため、条件ごとにブルート フォース チェックを実行し、それらを OR してボタンの無効状態を判断できます。

JSBin の例

var awayGoal = $("#awayGoal");
var awayPAssist = $("#awayPAssist");
var awaySAssist = $("#awaySAssist");
var awayGSubmit = $("#submitAwayScore");


$('#awayScore select').change(function() {
  var A = awayGoal.val();
  var B = awayPAssist.val();
  var C = awaySAssist.val();
  console.log(A,B,C);

  if(// case 1: only A 
     (A !== "" && B === "" && C === "") ||  

     // case 2: only A and B, A != B
     (A !== "" && B !== "" && C === "" && A !== B) || 

     // case 3: A, B, C, all unique
     (A !== "" && B !== "" && C !== "" && A !== B && A !== C && B !== C) ) { 

  //awayGSubmit.clearDisabled();
  console.log("enable button");
}
else {
    //awayGSubmit.disableButton();
    console.log("disable button");
}
});
于 2013-04-05T01:46:50.537 に答える
0

私は現在、検証のための非常に多くのルールを持つシステムを開発しています。私は自分で構築したjqueryを使用して検証しようとしていますが、考えなければならないことがたくさんあり、書くコードもたくさんあります。

このjquery 検証エンジンを試してみることをお勧めします。ここでデモページを確認できます。非常に多くの機能があり、最も興味深い部分は、独自のルールまたは検証を定義できることです。試してみてください。

幸運を。

于 2013-04-05T01:37:49.527 に答える