如何动态更新jQuery Validate消息

时间:2016-08-24 16:32:51

标签: jquery jquery-validate

$("#frmNewContracts").validate({

      errorClass   : "state-error",
      validClass   : "state-success",
      errorElement : "span",

      rules: {

            txtusername  :  { required    : true,
                              rangelength : [5, 18],
                              remote      : { url  : "./_aQ8/auxphp/ajxcontrol.php", type : "get" }
                            }
      },

      messages: {

            txtusername  :  { required    : "User-name is required",
                              rangelength : "User-name must be between 5 - 18 characters",
                              remote      : $.validator.format("User-name :  <strong>{0}</strong> is already taken please try another")
                            }
      },
        errorLabelContainer: "#joinerrgroup",
        wrapper: "li"               
});

您好, 由于问题建议我有一个使用jQ Validate插件验证的表单,上面提供的代码是我已经隔离的片段并且单独尝试使用我的html表单,问题是相同的。

问题是:用户名应该动态更新(或者我认为)显示用户输入的用户名,当它已经存在于数据库表中时 - 一切正常,但在测试并尝试多个重复的用户名时,故意检查功能,消息显示正确但用户名继续显示输入的第一个重复用户名。它不会更新以显示当前在用户名表单字段中的重复名称。这是正常的行为,我需要做别的吗?

3 个答案:

答案 0 :(得分:1)

messages您不需要remote选项。

根据文档,如果您从服务器端代码回显或发送JSON编码的字符串,验证将失败,此字符串将成为验证消息。

答案 1 :(得分:0)

您可以使用jQuery获取用户名,然后使用格式化方法。

remote: function() {
  return jQuery.format("User-name : <strong>{0}</strong> is already taken please try another", $("#username").val());
}

答案 2 :(得分:0)

我遇到了这个错误,被接受的答案只起作用了两次,正如Flim Flam在评论中指出的那样。对我来说,解决方法是在返回字符串的函数中添加一个参数(我称其为“ element”)。

例如:

remote: function(element) {
  return jQuery.format("User-name : <strong>{0}</strong> is already taken please try another", $("#username").val());
}