2017-07-31 4 views
0

私の検証コードは次のようなものです。私の目的は、できるだけ多くの電話番号の構文にわたって検証をカバーすることです。jQueryの検証プラグインは、複数の「矛盾」のルールを持って

上記のコードでは、デフォルトではadditional-methods.jsとパッケージされているので、US、UK、およびNLの電話番号の検証を使用しています。

ただし、動作しません。 1つの電話番号だけでは機能しません。 3つのタイプはすべて機能しません。

  • 7815558923(米国)
  • 781 555 8923(US)
  • 781-555-8923(米国)
  • 01632 960881(英国)
  • 06から14147112(NL:私は入力してみました)

これらはすべて私がオンラインで見つけた偽の生成番号です。それにもかかわらず、彼らはすべてバリデーションに合格しません。バリデーションルールの3つすべてを含めたからです。

質問は、システムを壊してしまう競合を回避しながら、可能な限り多くの領域をカバーする複数の検証ルールを持つにはどうすればいいですか?

+0

あなたは '.addMethod()'メソッドを組み込んだを使用して、独自のカスタムルールを作成する必要がありますあなたの仕様をカバーする新しい正規表現。 – Sparky

+0

@ Sparkyサンプルコードを教えてください。 –

+0

検索機能を使用すると、[300以上の質問がサンプルコードで表示されます](https://stackoverflow.com/search?q=%5Bjquery-validate%5D+addmethod)。 – Sparky

答えて

-1

あなたは、このような電話番号のルールを定義してみてください:ここでは

はここに簡単な例です:http://jsfiddle.net/dSz5j/

$(document).ready(function() { 

    jQuery.validator.addMethod("phoneUS", function (phone_number, element) { 
     phone_number = phone_number.replace(/\s+/g, ""); 
     return this.optional(element) || phone_number.length > 9 && phone_number.match(/^(\+?1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); 
    }, "Please specify a valid us phone number"); 

    /* 
    jQuery.validator.addMethod("phonesUK", function (phone_number, element) { 
     phone_number = phone_number.replace(/\s+/g, ""); 
     return this.optional(element) || phone_number.length > 9 && phone_number.match(/^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$/); 
    }, "Please specify a valid uk phone number"); 
    */ 

    $('#myform').validate({ // initialize the plugin 
     rules: { 
      phone_number: { 
       required: true, 
       phoneUS: true 
      } 
     }, 
     submitHandler: function (form) { // for demo 
      alert('valid form submitted'); // for demo 
      return false; // for demo 
     } 
    }); 

}); 
+0

私はこれを認識していますが、この回答は米国の電話番号のみをカバーしています。私はUS、UK、NL(デフォルトはjqueryバリデーションプラグインによって提供されています)をカバーしたいが、ルールは互いに競合している。 –

関連する問題