【问题标题】:Validation JQuery : Uncaught TypeError: Cannot call method 'call' of undefined验证 JQuery:未捕获的 TypeError:无法调用未定义的方法“调用”
【发布时间】:2013-03-25 19:16:43
【问题描述】:

我总是出错

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>

【问题讨论】:

  • 您是否尝试过传递完整的 URL 而不仅仅是查询字符串?
  • 您发布的 HTML 与您的 jQuery 不匹配。 u2 字段在哪里?此外,最好发布 rendered HTML,因为这是客户端代码将看到/使用的唯一内容。

标签: jquery jquery-validate


【解决方案1】:

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

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2013-03-05
    相关资源
    最近更新 更多