gpt4 book ai didi

javascript - JQuery 验证自定义错误消息未显示

转载 作者:行者123 更新时间:2023-12-01 03:09:21 25 4
gpt4 key购买 nike

以下是我的应用程序中的表单验证 JavaScript:

$('#EmploymentHistoryForm').validate({
ignore: ':hidden, [readonly=readonly]',
rules: {
'MemberJob.Phone': {
PhoneFieldValidation: true
}
},
messages: {
'MemberJob.Phone': {
PhoneFieldValidation: $.viewUrl.url.invaliedPhoneMessage
}
},
showErrors: function (errorMap, errorList) {
ShowErrors(errorMap, errorList, this.validElements());
},
submitHandler: function (form, event) {
event.preventDefault();
return false;
}
});

这里,$.viewUrl.url.invaliedPhoneMessage 在 cshtml 页面(在 ASP.NET MVC 中)设置,在调试 javascript 时,我可以在 $('...').validate 时看到该变量中的正确值函数被命中。

我在 JQuery 验证器集合中注册了一个新的验证器“PhoneFieldValidation”:

$.validator.addMethod("PhoneFieldValidation", ValidatePhoneAndAltPhone);

以下是我添加了此验证规则的输入控件的渲染 HTML:

<input class="PhoneFieldValidation" id="MemberJob_Phone" name="MemberJob.Phone" type="text" required="required" aria-required="true">

我可以看到验证被正确触发。这意味着,“ValidatePhoneAndAltPhone”方法被调用,并根据输入返回 bool 结果。

但是,错误消息未正确显示。它显示“警告:没有为 MemberJob.Phone 定义消息”,而不是“无效的电话号码”。

通过 jquery.validate.js 的 customMessage 函数进行调试时,我可以看到“this.settings.messages”集合没有“MemberJob.Phone”字段的消息,这似乎是此问题的根本原因.

知道如何解决这个问题吗?

我知道我们可以在 HTML 标记中添加“data-msg-[rulename]”属性来解决该问题。但我确信我目前遵循的方法也是正确的。看来我错过了一些东西。

对此的任何帮助将不胜感激。

谢谢

最佳答案

您从未提及$.viewUrl.url.invaliedPhoneMessage 来自何处。

如果您的自定义 PhoneFieldValidation 方法中已定义消息,则您不会在 messages 对象中定义消息。

否则,您无法在没有函数的情况下在 messages 对象中使用 JavaScript 变量。

整个问题是由 Unobtrusive 插件引起的,该插件自动构建 .validate() 方法调用。您不能在同一个表单上多次调用.validate();并且所有后续调用都将被忽略。相反,您可以简单地在 .addMethod() 方法中为 PhoneFieldValidation 定义自定义消息。

$.validator.addMethod("PhoneFieldValidation", function(value, element) {
// your custom method function here;
}, "This is your custom validation error message");

关于javascript - JQuery 验证自定义错误消息未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45958025/

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