jquery validate 在动态字段名称上显示错误

标签 jquery validation

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

我从服务器脚本接收到一个 json 对象,该对象具有字段名称,然后出现错误。

我想过使用 showErrors() 函数,但无法找到使其正常工作的正确方法。这是到目前为止我的脚本:

$.each(errors, function (key, value) {
    console.log("Key:", key);
    validator.showErrors({
    key: value[0]
    })
});

这会抛出一个错误 - uncaught typeError 因此我假设引用 key 作为字段名称不会删除它。我意识到它正在将 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"}
];

$.each 的第一次迭代中,循环 v 参数,它是 k 位置处的整个对象,在本例中:

{"firstname": "I know that your firstname is Pete, Pete!"}

您可以看到,这里需要第二个 $.each 循环,它将迭代每个对象元素的属性。

$.each(errors, function() {
  $.each(this, function(k, v) {
    /* ... code ... */
  });
});

来自documentation showErrors 方法采用 Object 作为参数。 您需要构建它。

//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);

在循环中,我构建了对象,并将其传递给对象 validatorshowErrors 方法。 我选择此解决方案是因为像这样,我只调用一次 showErrors,而不是每次在 $.each 循环中调用它。

Here一个有效的 jsbin 示例。

关于jquery validate 在动态字段名称上显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32579949/

相关文章:

php - 正确的表单验证 (PHP/MySql)

java - 在jsp页面中调用ajax时加载覆盖

使用日期对象的 javascript 日期验证

javascript - 无法使用 javascript 在表单上显示日期选择器

javascript - 如何在 javascript/jquery 的日期选择器中禁用日历中的过去日期?

php - 在 codeigniter 2.x 中创建自定义回调验证规则

css - HTML 页面不会验证

jquery - 如何使用Jquery包含?

javascript - 导航栏 mouseenter/mouseleave 在 li 元素之间不起作用

javascript - 如何将while循环添加到随机发生器