验证JQuery:未捕获TypeError:无法调用未定义的方法'call'

时间:2013-03-25 19:16:43

标签: jquery jquery-validate

我总是收到错误

Uncaught TypeError: Cannot call method 'call' of undefined

当我在表单中输入正确的电子邮件时。定制按摩也不起作用。 函数?module=auth&action=registration正常工作(它返回字符串'false'或'true')。

我使用此插件:JQuery Validation Plugin

我认为问题出现在以下文件中。

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>

1 个答案:

答案 0 :(得分:3)

messages是一个独立的选项,但您不小心将放在rules中,这会破坏插件。

修复此语法后似乎没有错误。 (顺便说一句,当代码正确缩进和标签时,代码更容易排除故障。)

DEMO: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"
            }
        }
    });

});