我正在构建一个向页面呈现一系列问题的页面,其中一些问题有多个选项,其他问题可能只需要用户在文本框中填写一些内容。
由于这些问题的性质以及它们需要验证的方式(需要查看整个问题),我得出的结论是开箱即用的必填字段验证器并不能完全解决问题。
所以我开始写自己的,但遇到了一些障碍......
在我的验证方法中,我根据验证器中的条件传递了 2 条可能出现的“错误消息”。
在这种情况下,我如何将它们放在正确的位置?基于我不知道实际的错误消息应该是什么,直到我到达验证处理函数中的失败条件,我需要能够对 jquery 说“将其设置为错误消息并使该字段失败”。
$.validator.unobtrusive.adapters.add("myrule", ['enable', 'err1', 'err2'], function (options) {
var value = {
enable: options.params.enable,
err1: options.params.err1,
err2: options.params.err2
};
options.rules["myrule"] = value;
if (options.message) {
options.messages["myrule"] = options.message;
}
});
$.validator.addMethod("myrule", function (value, element, params) {
var question = $(element).closest('fieldset[data-questionId]');
var result = validateMyrule(question, params['enable'], params['err1'], params['err2']);
return result;
});
function validateMyrule(question, enabled, err1, err2)
{
// actual code omitted to simplify question
if(someCondition)
{
if(someCondition)
{
errorMessage = err1;
}
else
{
errorMessage = err2;
}
return false;
}
return true;
}