【问题标题】:jQuery .Validate() Remote sucess function and messagejQuery .Validate() 远程成功函数和消息
【发布时间】:2014-01-09 20:09:54
【问题描述】:

我需要使用 jQuery.Validate() 插件验证电子邮件字段,它有一个“远程”方法,我们必须将其发布到服务器,服务器需要返回 true 或 false,而不是使用传统方式(添加服务器上的函数返回 true 或 false),我需要从服务器获取 json 响应,并在成功时运行一个函数来决定在哪里返回 true 或 false...

这是来自服务器的响应的样子(我使用的是 Yii ajax 表单验证)

{
   "zipcode":[
      "Zipcode cannot be blank."
   ],
   "email":[
      "Email is already registered"
   ],

}

如果数组中列出了电子邮件,这意味着验证有错误所以我创建了一个远程验证规则,如下所示:

    'email': {
        required: true,
        email: true,
        remote:{
            type:"POST",
            url:url,
            dataType:'json',
            data:{'email':function(){
                $('#email').val();
            },ajax:'validate'},
            success:function(resp){

                $.each(resp,function(index,value){
                    if(index == "email")
                        return false;
                });

            }
        }
    },

但是不起作用,我也没有找到可以添加远程验证错误消息的地方,我想将数组电子邮件值作为消息传递...

【问题讨论】:

  • 究竟是什么不起作用?
  • 更改'email':function(){ $('#email').val(); } 到 'email': $('#email').val()
  • 我尝试在成功函数上添加 return false 或 return true 以查看它是否有任何不同但没有...
  • 我建议你阅读the remote method。它并不像你做的那么复杂。 truefalse 应该来自您的服务器。如果你不能这样做,那么你就不能使用remote 方法。考虑使用addMethod 编写您自己的远程规则。

标签: javascript jquery yii jquery-validate


【解决方案1】:

你需要用下面的函数替换你的成功函数:

dataFilter: function (data) {
                return 'false'; //Email not exist
                return 'true'; //Email already exist
            }

请将真/假值作为字符串传递。

用于显示消息:

remote:{......},
messages:{email:'Please enter valid email', remote : "{0} is already exist"}

我认为这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    相关资源
    最近更新 更多