N R*_*ing 4 validation jquery asp.net-mvc-4
我的 ASP.NET MVC4 应用程序具有在模型中定义并在控制器方法中实现的远程验证规则。我的表单是动态添加到页面的。因此,我使用以下代码来触发验证。
$(tabId).on("submit", formId, function (event) {
event.preventDefault();
var form = $(this);
form.removeData("validator");
$.validator.unobtrusive.parse(form);
if (form.valid())
{
// form submission
// THIS part executes even though the remote validation returns false
}
return false;
});
Run Code Online (Sandbox Code Playgroud)
它开始远程验证并且不等待完成然后提交表单。如果任何其他字段无效(例如,名称是必填字段),则会停止提交。但是,它不会等待远程验证。
我在 SO 上找到了一些解决方法,例如link1和link2。但是,只有在我的页面中定义了 jQuery 验证规则时,这些才有效。但是,我使用的是 MVC4 模型验证规则。因此,我没有兴趣再次在我的视图页面中重新定义规则。
有什么解决办法吗?
您可以使用验证器上的 pendingRequest 变量来查看表单尝试提交时是否还有待处理
$(tabId).on("submit", formId, function (event) {
event.preventDefault();
var form = $('#formid');
form.removeData("validator");
$.validator.unobtrusive.parse(form);
if (form.valid() && form.data('validator').pendingRequest == 0)
{
// form submission
}
return false;
});
Run Code Online (Sandbox Code Playgroud)
如果您想在字段验证时向用户显示消息,您可以使用 startrequest 和 stopRequest 函数:
$(function(){
var validator = $('#formid').data('validator');
var oldStartRequest = validator.startRequest;
validator.startRequest = function (element) {
console.log(element.name + ' has begun validating')
oldStartRequest.apply(this, arguments);
};
var oldStopRequest = validator.stopRequest;
validator.stopRequest = function (element, valid) {
console.log(element.name + ' has finished validating');
console.log(element.name + ' is valid: ' + valid)
oldStopRequest.apply(this, arguments);
};
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2454 次 |
| 最近记录: |