-1

以前のstackoverflowの質問によると、これが私のjqueryコードです

$('#productId').validate({
     rules: {
         product: {
             required: true,
             term: {regex: /^$|\s/}
         }
     },
     messages: {
         product: {
             required: "A text is much",
             term: "Please avoid spaces"
         },
     },  

     showErrors: function (errorMap, errorList) {

         $.each(this.successList, function (index, value) {
             $('#'+value.id+'').popover('destroy');
         });


         $.each(errorList, function (index, value) {

             $('#'+value.element.id+'').attr('data-content',value.message, 'title', 'Oops!').popover({
                 placement: 'top',
                 trigger: 'manual',
                 delay: { show: 500, hide: 5000 }
             }).popover('show');

         });

     }

 });

私がやろうとしているのは、入力された用語に空白がある場合にポップオーバーを表示することです。しかし、それは私にエラーを与えるたびに

Uncaught TypeError: Cannot call method 'call' of undefined 

正規表現の部分に問題があることはわかっています。minLength で同じコードを試してみたところ、うまくいきました。私は何を間違っていますか?

PSポップオーバーにTwitterブートストラップを使用しています。

更新: エラーの詳細

Uncaught TypeError: Cannot call method 'call' of undefined ----------jquery.validate.js:504

    $.extend.check ---------- jquery.validate.js:504

    $.extend.element ---------- jquery.validate.js:357
    $.extend.defaults.onfocusout ---------- jquery.validate.js:231

    delegate ---------- jquery.validate.js:317

    (anonymous function) ---------- jquery.validate.js:1184

    jQuery.event.dispatch ---------- jquery.js:3075

    elemData.handle ---------- jquery.js:2751

    jQuery.event.trigger ---------- jquery.js:2987
    jQuery.event.simulate ---------- jquery.js:3302

    handler
4

2 に答える 2

1

rules宣言の構造は次のとおりです...

rules: {                       // <- rules:
    field_name: {              // <- name attribute of field                   
        rule_name: parameter,  // <- rule: parameter
        required: true,   // example 1
        min: 30           // example 2
    }
},

今あなたのコード:

rules: {
    product: {
        required: true,
        term: {regex: /^\s*$/}
    }
},

正確にはどうtermあるべきですか?そして、なぜregex中にあるのtermですか?

  • がルールの場合、ルール ( ) 内にtermルール ( ) をネストすることはできません。regexterm
  • termrule ドキュメントによると、「組み込み」ではありません。
  • termコードによると、「カスタム」ルールでもありません。
  • termがフィールドの場合、フィールド ( ) 内にnameフィールド ( ) をネストすることはできません。termproduct

これはあなたのエラーを説明します、

「キャッチされていない TypeError: 未定義のメソッド 'call' を呼び出せません」

つまり、プラグインはterm未定義のメソッドと見なします。

正規表現が正しいと仮定すると、次のようになります...

rules: {
    product: {
        required: true,
        regex: /^\s*$/
    }
},

また、カスタム メソッドが を返すtrue場合、フィールドは検証され、 を返す場合false、フィールドは検証に失敗し、エラーが表示されることに注意してください。

于 2013-04-20T15:32:37.530 に答える