我正在尝试在我的asp.net mvc 4应用程序上放置一个jQuery动画加载器,当用户点击提交按钮时,它将超过整个屏幕,白色清洗,请稍等。这一切都有效。我遇到问题的部分是,当我的表单上存在验证错误时,客户端验证会启动(我想要保留)并且它被困在jquery加载器屏幕后面。我这样称呼装载机:
$(function () {
$("#submitbtn").click(function () {
$("#loading").fadeIn();
});
});
在我的$(document).ready(....
函数中。我的第一个想法是使用
@if (ViewData.ModelState.IsValid)
{
<text>$(function () {
$("#submitbtn").click(function () {
$("#loading").fadeIn();
});
});</text>
}
但是当页面加载时这是有效的,它会写出来(我的坏我应该知道)。现在我不知所措,我不知道该怎么做。有人可以帮忙吗?
答案 0 :(得分:2)
根据我对你的问题的理解,我会对它进行一次拍摄。所以你有:
$(function () {
$("#submitbtn").click(function () {
$("#loading").fadeIn();
if (validFormInputs()) {
yourForm.submit();
}
else {
// hide the laoder again
$("#loading").fadeOut(); // or .hide or however you want to hide it
}
});
});
现在,如果提交动作发生得太快,加载器可能根本不显示,因为提交是回发而不是ajax帖子。如果在服务器端有一个错误没有被客户端验证捕获,那么你可以再次返回视图,而不必在你的javascript上做一些特别的事情。所以你的方法可能如下所示:
[HttpPost]
public ActionResult Edit(YourModel input) {
if (!ModelState.IsValid) {
return View(input);
}
// do something here, redirect or return the view again
}
请再次注意,此代码用于回发操作,不用于ajax帖子。
<强>更新强> 所以基本上就是这一步:
$("#submitbtn").click(function ()...
$("#loading").fadeIn();
validFormInputs()
如果验证失败,则隐藏您的装载机$("#loading").fadeOut();
4A。假设您使用的是验证插件,或者在任何情况下,您都应该显示错误消息
如果验证成功,则提交表单yourForm.submit();
如果服务器端验证失败,则返回视图return View(input);