2016-05-30 5 views
0

jQuery Validateプラグインで検証するフォームがあり、もう1つは0(ゼロ)の値を入力したいと思います。しかし、どちらか一方が記入されていることが必須である必要があります。ここでjQuery 1つのフィールドは必須フィールドですが、両方ともではありません

は私の実際のフォームです:

enter image description here

これは私のフォームのHTMLです:

<div class="row"> 
      <div class="col-md-6"> 
       <div class="form-group"> 
        <label> <span>Amount to Player</span></label> 
        <input name="AmountToHorse" type="text" class="form-control"> 
       </div> 
      </div> 
      <div class="col-md-6"> 
       <div class="form-group"> 
        <label> <span>Amount to Stable</span></label> 
        <input name="AmountToStable" type="text" class="form-control"> 
       </div> 
      </div> 
     </div> 

これは私の検証です:

$('#reloadForm').validate({ 
         rules: { 

          AmountToHorse: { 
           required: true, 
           number: true 
          }, 
          AmountToStable: { 
           required: true, 
           number: true 
          }, 
         } 
        }); 

行う方法上の任意の手がかりそれ?

+0

検証コードとフォームのHTMLを投稿してください。 –

+0

'.addMethod()'メソッドを使ってカスタムルールを書く必要があります。しかし、あなたのための詳細な答えを書く作業を行う前に、あなたは[このプラグインに関する最後の質問](http://stackoverflow.com/q/37515146/594235)に満足のいく助けを得ているのだろうかと思いますか? – Sparky

+0

@ Sparky申し訳ありませんが、他の答えを受け入れることを忘れてしまった。終わらせる。あなたの助けに感謝 。 – VAAA

答えて

0

カスタムルールを作成するには、the .addMethod() methodを使用する必要があります。

は、次に検証メッセージがすべてフィールドに自分自身をアップデート確保するためにblur keyupハンドラを使用して...それに応じて

$(document).ready(function() { 

    $.validator.addMethod('onlyOne', function(value, element, param) { 
     return this.optional(element) || $('[name="' + param[0] + '"]').is(':blank'); 
    }, "Please fill out only one of these fields"); 

    $('#myform').validate({ 
     rules: { 
      foo: { 
       onlyOne: ["bar"], 
       number: true 
      }, 
      bar: { 
       onlyOne: ["foo"], 
       number: true 
      } 
     } 
    }); 

}); 

を調整します。このフォームに他のフィールドがあるかどうかわからないので、これらのセレクターを調整して、関連性と必要性​​のあるものだけをターゲットにします。

$('input').on('blur keyup', function() { 
    $('#myform').valid(); // force validation on entire form 
}); 

概念実証DEMO:http://jsfiddle.net/e01d5sw7/


EDIT:OPのコメントを1として

、両方のフィールドを同時に記入するべきではありませんが、 一方のフィールドまたは他方はrequired ...

$.validator.addMethod('onlyOne', function(value, element, param) { 
    return ($(element).is(':filled') && $('[name="' + param[0] + '"]').is(':blank')) || 
    (($('[name="' + param[0] + '"]').is(':filled')) && $(element).is(':blank')); 
}, "Please fill out only one of these fields"); 

DEMO#2:http://jsfiddle.net/Lnxxgs92/

+0

動作しますが、空のままにしておくと両方が通過します。 1つは記入する必要があります。 – VAAA

+0

@VAAA、あなたのOPは「2つのうち1つのフィールドが必要です」と言っていませんでした* ...実際には、何かが「必須」であるとは言及していませんでした。あなたは*「1つのフィールドを許可する」*と言いましたが、それはまさに私の答えが示すものです。 – Sparky

+0

@VAAA、編集された回答を参照してください。 – Sparky

関連する問題