如何更新 jQuery 动态验证消息

How to update jQuery Validate message dynamically

$("#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 表单的片段,问题是相同的。

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

可以通过jQuery获取用户名,然后在格式化方法中使用。

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

您不需要 remotemessages 选项。

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

我 运行 遇到了这个错误,接受的答案只像 Flim Flam 在评论中指出的那样有效了两次。对我来说,解决方法是向 returns 字符串的函数添加一个参数(我称之为 "element")。

例如:

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