经历了几个主题并且无法完全找到这种情况。我的页面是ASP.NET 4.5,C#。我为(IMHO)安全原因使用“服务器端”验证,并在动态表单上有几个验证组。
我认为我们都熟悉在回发期间禁用按钮以防止双击的优点。我通过各种方式使用OnClientClick阅读了相当多的线程示例。
我希望我的页面能够做到这一点:
1 - 用户点击提交(或任何按钮) 2 - 在适当的验证组上触发服务器端自定义验证 3 - 如果验证通过,请禁用客户端按钮并继续回发 4 - 如果验证未通过,则照常显示错误。仍应启用客户端按钮。
3号似乎是踢球者。这甚至可以通过服务器端验证吗?似乎无法验证服务器端,回来执行javascript,然后回到postback。如果有可能,那么我对某些机制很浑浊。具体来说,如何告诉客户端特定验证组在服务器端传递正常。不太具体,整个事情,哈哈。
谢谢!
答案 0 :(得分:0)
由于你使用的是ASP.NET,我假设你也在使用jQuery(这是默认的)。
$('#MyForm').submit(function (event){
event.preventDefault();
var form = $(this);
if (!form.data('submit-lock')){// check if we're waiting on the server's response
form.data('submit-lock', true);// set the lock since we're about to post to the server
$.ajax(/*your url and data and whatnot here*/)
.always(function(){
form.data('submit-lock', false);// the server responded, unlock
});
}
});
$ .ajax()返回一个jQuery Deferred promise对象。 promise.always(function)在ajax解析(成功)或拒绝(失败)时注册要调用的函数。 关于延期模式的更多阅读: http://joseoncode.com/2011/09/26/a-walkthrough-jquery-deferred-and-promise/