gpt4 book ai didi

javascript - 使用 parsley.js 2.x 自定义错误显示

转载 作者:行者123 更新时间:2023-11-29 18:16:25 26 4
gpt4 key购买 nike

我需要在弹出窗口中显示验证错误列表。我用 <form data-parsley-ui-enabled="false"... 禁用了 UI 修改并订阅“parsley:field:error”事件,我在其中收集错误信息,然后在“parsley:form:validated”上显示弹出窗口,当然只在条件 isValid() == false 上显示.但是我在“parsley:field:error”处理程序中获取实际错误消息时遇到问题。处理程序获取包含一个对象的单个参数,到目前为止我检查过它具有几个属性:

  1. $element - 实际的 jQuery 字段,
  2. 约束 - 约束列表
  3. options.i18n - 它有一些原始错误消息字符串,我可以像这样使用 n 变量进行迭代:obj.options.i18n.<LANGUAGE_CODE>.[obj.constraints[n].name] ,但它们偶尔会包含占位符 (%s),因此不适合显示到最后用户;有时有一个数组而不是一个字符串,这完全违背了这个想法;

问题是,如果我没有禁用 UI,我如何获得显示的实际错误消息?

最佳答案

解决方案

使用以下方式访问优先错误消息(即data-parsley-priority-enabled=true):

$.listen('parsley:field:error', function(parsleyField) {
// parsley field
console.log(parsleyField);

// which constraint has failed
console.log(parsleyField.validationResult[0].assert.name);

// the data-parsley-<constraint>-message
console.log(parsleyField.options[parsleyField.validationResult[0].assert.name+'Message']);

// the default constraint fail message
console.log(window.ParsleyValidator.getErrorMessage(parsleyField.validationResult[0].assert));
});

简短说明

您快到了,消息存储在 options 中对象本身,消息的格式如下:<constraint>Message ,例如:requiredMessage .

这类似于 jQuery 中的“数据属性到 js 变量转换”约定,这已在文档中提到:<parsleynamespace>-<constraint>-message变成 <constraint>Message .

看到 annotated source for ui.js 后有了这个想法, 检查 _getErrorMessage 函数。


要访问错误字段的所有验证消息(即 data-parsley-priority-enabled=false ),您可以简单地遍历 parsleyField.validationResult数组:

for (i=0; i<parsleyField.validationResult.length; i++) {
console.log(parsleyField.options[parsleyField.validationResult[i].assert.name+'Message']);
}

关于javascript - 使用 parsley.js 2.x 自定义错误显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22923000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com