4

いつもエラーが発生します

Uncaught TypeError: Cannot call method 'call' of undefined

フォームに正しいメールアドレスを入力したとき。カスタムマッサージも機能しません。関数?module=auth&action=registrationは正しく機能します(文字列「false」または「true」を返します)。

私はこのプラグインを使用しています:JQuery検証プラグイン

以下のファイルに問題があると思います。

custom.validation.js

$(document).ready(function() {
$("#reg").validate({

       rules: {
               'u1[firstName]': "required",
               'u2[firstName]': "required",
               'u1[lastName]' : "required",
               'u2[lastName]' : "required",
               'u1[email]' : {
                   "required" : true,
                   "email" : true,
                   "remote" : { 

                    url: '?module=auth&action=checkemail',
                    type: "post",
                    data:
                      {
                          'u1[email]': function()
                          {
console.log($("#email1").val());
                              return $("#email1").val();
                          }
                    }                  
               },
               'u2[email]' : "required" 
       },      
       messages: {
               'u1[firstName]': {
                       required: "My requied text"
               }
       }    
    }
});
});

フォーム

<fieldset>
    <label for="imie" >Name:</label>
    <input type="text" name="u1[firstName]"{if $smarty.post.u1.firstName} value="{$smarty.post.u1.firstName}"{/if}>
    <label for="nazwisko" >Lastname:</label>
    <input type="text" name="u1[lastName]" {if $smarty.post.u1.lastName} value="{$smarty.post.u1.lastName}"{/if}>
    <label for="adresEmail">E-mail:</label>
    <input type="text" name="u1[email]" id="email1" {if $smarty.post.u1.email} value="{$smarty.post.u1.email}"{/if}>
</fieldset>
<fieldset>
    <button type="submit">Send</button>
</fieldset>

4

1 に答える 1

3

messagesはスタンドアロンオプションですが、誤って内部に配置したためrules、プラグインが壊れています。

この構文が修正されると、エラーなしで機能するように見えます。(ところで、コードが適切にインデントされ、タブが付けられていると、コードのトラブルシューティングが簡単になります。)

デモ:http: //jsfiddle.net/sERPT/

$(document).ready(function () {

    $("#reg").validate({

        rules: {
            'u1[firstName]': "required",
            'u2[firstName]': "required",
            'u1[lastName]': "required",
            'u2[lastName]': "required",
            'u2[email]': "required",
            'u1[email]': {
                required: true,
                email: true,
                remote: {
                    url: '?module=auth&action=checkemail',
                    type: 'post',
                    data: {
                        'u1[email]': function () {
                            console.log($("#email1").val());
                            return $("#email1").val();
                        }
                    }
                }
            }
        },
        messages: {
            'u1[firstName]': {
                required: "My requied text"
            }
        }
    });

});
于 2013-03-25T22:01:07.687 に答える