0

jQuery検証プラグインの新しい検証メソッドを作成したいと思います。2つの選択ボックスがあり、両方に値がyes選択されている場合にスローしてエラーが発生しますか?

いくつかの異なる方法を試しましたが、何も機能しません。

これが私が試したことです:

$.validator.addMethod('noDuplicate0', function(value, element, params) {     
      value = $.makeArray($(element).val()) || [];
      var other = $.makeArray($(input[name=nightFreeRoomOnly]).val()) || []; 
      return $.inArray('0', value) == -1 || $.inArray('0', other) == -1; },'Both options can not be set to yes');
}

何か案が?

4

2 に答える 2

1

独自のカスタム ルールを追加する必要があります。

notEqualメソッドを追加するには

$.validator.addMethod("notEqual", function(value, element, params) { 
 return (value != $(param).find('option:selected').val() || value!='yes');
}, jQuery.format("Values A and B Cannot be equal"));

そして、検証からこのカスタムメソッドを実行します

$("#myform").validate({
  rules: {
   A: "required",
   B: {
      notEqual: "#A"
   }
 }
});

A と B は 2 つの選択フィールド ID です

于 2012-12-14T13:23:32.757 に答える
0

あなたは正しい軌道に乗っています... を使用してaddMethodください。フォームが次のようになっている場合:

<form id="myform">
<select name="select1" id="select1">
    <option selected="selected">yes</option>
    <option>no</option>
</select>
<select name="select2" id="select2">
    <option selected="selected">yes</option>
    <option>no</option>
</select>    
<br><input type="submit">
</form>​

次のような検証スクリプトを作成できます。

$.validator.addMethod('notbothyes', function(val, el, param) {
    return (val != 'yes' || ('yes' != $(param).find('option:selected').val()));
}, 'These fields cannot both be yes');

$("#myform").validate({
    rules: {
        select1: {
            notbothyes: '#select2'
        },
        select2: {
            notbothyes: '#select1'
        }
    }
});

ここで実際の動作を確認してください: http://jsfiddle.net/ryleyb/FtUPq/1/

于 2012-12-14T18:50:04.323 に答える