jquery验证动态字段名显示错误

jquery验证动态字段名显示错误,jquery,validation,Jquery,Validation,我正在使用jquery验证插件来验证我的表单。还有服务器端验证,我希望能够标记显示服务器端验证错误的字段,例如,如果jquery验证没有捕获到唯一电子邮件 我从服务器脚本接收到一个json对象,它有字段名,然后出错 我曾想过使用showErrors()函数,但无法找到正确的方法来实现此功能。以下是我目前的脚本: $.each(errors, function (key, value) { console.log("Key:", key); validator.showErrors

我正在使用jquery验证插件来验证我的表单。还有服务器端验证,我希望能够标记显示服务器端验证错误的字段,例如,如果jquery验证没有捕获到唯一电子邮件

我从服务器脚本接收到一个json对象,它有字段名,然后出错

我曾想过使用
showErrors()
函数,但无法找到正确的方法来实现此功能。以下是我目前的脚本:

$.each(errors, function (key, value) {
    console.log("Key:", key);
    validator.showErrors({
    key: value[0]
    })
});
这会抛出一个错误-
uncaughttypeerror
,因此我假设引用键,因为字段名不会剪切它。我意识到它将
key
评估为字段名,而不是
key
中包含的值,这正是我试图实现的


谢谢

您正在循环一个JSON对象。 我将假设您的
errors
json对象是这样的:

var errors = [
  {"firstname": "I know that your firstname is Ray, Ray!"},
  {"age":"You're not so old"},
  {"job":"You're not Buddha"}
];
$的第一次迭代中。每个
循环
v
参数,它是
k
位置的整个对象,在这种情况下:

{"firstname": "I know that your firstname is Pete, Pete!"}
您可以看到,这里需要第二个
$。每个
循环将迭代每个对象元素上的属性

$.each(errors, function() {
  $.each(this, function(k, v) {
    /* ... code ... */
  });
});
showErrors
方法将
对象
作为参数。 你需要建造它

//my validator object
var validator = $( "#yourFormID" ).validate();

// empty object that I'll fill with name input/errors
var objErrors = {};

//iterate over array of objects/maps
$.each(errors, function() {
  //iterate over the properties on each object
  $.each(this, function(k, v) {
    objErrors[k] = v;
  });
});
validator.showErrors(objErrors);
在循环中,我构建了我的对象,并将其传递给对象的方法
validator
。 我之所以选择此解决方案,是因为与此类似,我只调用一次
showErrors
,而不是每次在
$循环中调用它


一个有效的jsbin示例。

太好了。今晚我要试一试。谢谢你完整的回答。真的很有用。非常感谢。