我有一个表单,在提交时会显示繁忙的动画并禁用提交按钮。
任何人都知道如何查询Microsoft的Sys.Mvc.FormValidation
以查看表单是否通过了测试,以便我可以阻止显示表单是否实际未提交的繁忙动画?还有其他一些解决办法吗?
目前我的客户端JavaScript看起来像这样:
$('form').submit(function() {
$('input[type=submit]', this).attr('disabled', 'disabled');
ShowBusy();
});
干杯, 加文
答案 0 :(得分:9)
我最终放弃了,并使用Microsoft ASP.NET MVC 2 RC和来自“期货”项目的MicrosoftMvcJQueryValidation.js库文件插入JQuery验证库,自动为我连接所有内容。
本文解释了该过程: http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx
因此,使用JQuery验证,我需要做的就是调用valid()...
$('form').submit(function() {
if ($('form').valid()) {
$('input[type=submit]', this).attr('disabled', 'disabled');
ShowBusy();
}
});
答案 1 :(得分:0)
使用http://jquery.malsup.com/form/。这是我的方法 - 这个方法处理停止动画的错误(和其他条件)。它也可以ajaxify形式或立即提交(取决于提交标志),并做其他几件事。
function GenericAjaxForm(form, success, submit, beforeSubmit) {
var form = $(form);
var options = {
beforeSubmit: function(data, frm, options) {
form.disable(true);
form.find("input:submit:last").after(
"<span class='ajaxwait'><img src='../Content/images/smallwait.gif' /></span>");
if (beforeSubmit)
return beforeSubmit(data, frm, options);
},
error: function(xhr, status, error) {
$(".validation-summary-errors").html(getAjaxErrorMessage(status, xhr));
form.disable(false);
form.find(".ajaxwait").remove();
},
success: function(data) {
form.disable(false);
form.find(".ajaxwait").remove();
$(".validation-summary-errors").html('');
if (CheckValidationErrorResponse(data, form))
return;
success(data);
}
};
if (submit)
form.ajaxSubmit(options);
else
form.ajaxForm(options);
}
答案 2 :(得分:0)
这仅适用于MVC 1.0,在MVC 2.0中微软切换到使用jQuery,这不再有效。
onformSubmit: function (e) {
if (!Sys.Mvc.FormContext && Sys.Mvc.FormContext.getValidationForForm(this).validate('submit').length) {
return;
showBusy();
}
如果您正在使用Ajax.BeginForm帮助程序,则可以执行类似
的操作Ajax.BeginForm("action","controller", AjaxOptions{ OnBegin="onformSubmit",...}