jQuery验证插件:添加验证规则但需要隐藏焦点消息
jQuery Validation plugin: add validation rules but need to hide message on focus
根据某些条件调用以下方法使控件成为强制控件
addRequired = function ($ele, msg, min, minMsg) {
$ele.rules('add', {
required: true,
min: min,
messages: {
required: msg,
min: minMsg
}
});
$.validator.unobtrusive.parseElement($ele.get(0));
}
以及调用代码
if (requiredOptions["CompanyName"]) {
addRequired($('#CompanyName'), 'Company is required');
}
if (requiredOptions["SiteName"]) {
addRequired($('#SiteNameDD'), 'Enter a Site');
}
验证工作正常。但要求是当控件(例如 CompanyName)获得焦点时,所需的消息应该消失。基本上,只要所需的控件获得焦点,就会出现错误消息。要求是在 focusout 或表单提交事件上显示消息。我怎样才能做到这一点?
已更新
根据@Praveen_Kumar提到的解决方案,我想出了以下变化
addRequired = function ($ele, msg, min, minMsg) {
$ele.rules('add', {
... ... ...
});
// Remove the validator message on focus.
$ele.on("focus", function () {
var thisRule = $.validator.staticRules($ele.get(0));
thisRule.required = false;
});
// Add the validator message on blur.
$ele.on("blur", function () {
var thisRule = $.validator.staticRules($ele.get(0));
thisRule.required = true;
});
...
}
只需在此处添加一些代码:
addRequired = function ($ele, msg, min, minMsg) {
$ele.rules('add', {
required: true,
min: min,
messages: {
required: msg,
min: minMsg
}
});
// Remove the validator message on focus.
$ele.one("focus", function () {
$.validator.hideMessage($ele.get(0)); // Replace this with the right method.
$ele.off("focus");
});
$.validator.unobtrusive.parseElement($ele.get(0));
}
这里$.validator.hideMessage($ele.get(0));
是一个伪函数,它接受被解析并被认为无效的元素。您没有提供验证器插件 URL 来正确指导您确切的隐藏功能是什么。
根据某些条件调用以下方法使控件成为强制控件
addRequired = function ($ele, msg, min, minMsg) {
$ele.rules('add', {
required: true,
min: min,
messages: {
required: msg,
min: minMsg
}
});
$.validator.unobtrusive.parseElement($ele.get(0));
}
以及调用代码
if (requiredOptions["CompanyName"]) {
addRequired($('#CompanyName'), 'Company is required');
}
if (requiredOptions["SiteName"]) {
addRequired($('#SiteNameDD'), 'Enter a Site');
}
验证工作正常。但要求是当控件(例如 CompanyName)获得焦点时,所需的消息应该消失。基本上,只要所需的控件获得焦点,就会出现错误消息。要求是在 focusout 或表单提交事件上显示消息。我怎样才能做到这一点?
已更新
根据@Praveen_Kumar提到的解决方案,我想出了以下变化
addRequired = function ($ele, msg, min, minMsg) {
$ele.rules('add', {
... ... ...
});
// Remove the validator message on focus.
$ele.on("focus", function () {
var thisRule = $.validator.staticRules($ele.get(0));
thisRule.required = false;
});
// Add the validator message on blur.
$ele.on("blur", function () {
var thisRule = $.validator.staticRules($ele.get(0));
thisRule.required = true;
});
...
}
只需在此处添加一些代码:
addRequired = function ($ele, msg, min, minMsg) {
$ele.rules('add', {
required: true,
min: min,
messages: {
required: msg,
min: minMsg
}
});
// Remove the validator message on focus.
$ele.one("focus", function () {
$.validator.hideMessage($ele.get(0)); // Replace this with the right method.
$ele.off("focus");
});
$.validator.unobtrusive.parseElement($ele.get(0));
}
这里$.validator.hideMessage($ele.get(0));
是一个伪函数,它接受被解析并被认为无效的元素。您没有提供验证器插件 URL 来正确指导您确切的隐藏功能是什么。