1

jquery validate を使用していますが、通常のフィールドで動作します。検証が満たされる前に、1 つのリストボックスに少なくとも 1 つのエントリがあることを確認する方法が必要です。カスタムメソッドを追加しようとしました。

$.validator.addMethod('checklist', function(value, element) {
  if ($("#currentimp").val() ==""){
    return false;
    } else return true;
  }, "Listbox is empty");

次に、ルールには次のものがあります。

currentimp: {
   checklist:true
}

これを達成するためのより良い方法があるかどうかはわかりませんが、私がやろうとしていることの良い例を見たことがありません. また、フォーム ボタンを送信ボタンに変更しましたが、submithandler に送信機能を追加しない限り、送信されません。これは正常ですか?

4

2 に答える 2

1

リストボックスがある種の選択またはラジオである場合、required:trueルールを使用するだけでよく、独自のカスタム ルールを作成する必要はありません。

于 2013-09-26T20:20:46.423 に答える
1

引用OP

「検証が完了する前に、1 つのリストボックスに少なくとも 1 つのエントリがあることを確認する方法が必要です。」

「リストボックス」の場合は<select multiple="multiple">、カスタム メソッドを記述する必要はありません。requiredルールを使用します。

a を検証する際の秘訣selectは、最初<option>に が含まれている必要があることvalue=""です。

HTML :

<select name="currentimp" id="currentimp" multiple="multiple">
    <option value="">...</option>
    <option value="1">option 1</option>
    <option value="2">option 2</option>
    <option value="3">option 3</option>
    <option value="4">option 4</option>
</select>

jQuery :

$(document).ready(function () {

    $('#myform').validate({
        rules: {
            currentimp: {
                required: true
            }
        }
    });

});

デモ: http://jsfiddle.net/5GKbF/


引用OP

「フォームボタンも送信ボタンに変更しましたが、submithandler に送信関数を追加しないと送信されません。これは正常ですか?」

いいえ、これは正常ではありません。

jQuery Validate プラグインは、タグtype="submit"内に含まれている限り、任意のボタンのクリックを常にキャプチャします。<form></form>

<input type="submit" ...との両方<button type="submit" ...が受け入れられます。

submitHandlerコールバックは必須オプションではありません。

コールバック オプションを省略した場合submitHandler、検証が成功すると、フォームはaction属性内で指定された URL に送信されます。

<form action="myScript.php" ...

通常、 は、をバイパスして 経由でフォームを送信する場合、および/または他の機能を実行するsubmitHandler場合にのみ使用されます。action.ajax()

于 2013-09-27T17:37:46.167 に答える