我有一个asp.net表单,允许用户提交一个注册表单,该表单使用Web服务在SharePoint列表内部发送/存储所有这些值,因此提交页面处理时间比正常情况稍长一些形式。
在页面重定向到感谢页面之前的平均时间,用户倾向于再次单击提交按钮,这会导致多次提交相同的记录。
请建议一种限制此提交的方法,点击按钮我使用jquery函数进行数据验证,我尝试在那里使用btn.disable = true方法,但是一旦它到达了else块(在通过验证后)这是disable = true代码的地方)它在读取btn.disable = true语句后不提交表单。
专家,请给我指路。
提前致谢。
答案 0 :(得分:4)
参见Nathan Long的插件:https://stackoverflow.com/a/4473801/1414562
{已修改为允许在输入更改时重新提交表单}
// jQuery plugin to prevent double submission of forms
jQuery.fn.preventDoubleSubmission = function() {
var $form = $(this);
$form.on('submit',function(e){ //on here instead of bind
if ($form.data('submitted') === true) {
// Previously submitted - don't submit again
e.preventDefault();
} else {
// Mark it so that the next submit can be ignored
$form.data('submitted', true);
}
}).find('input').on('change',function(){
$form.data('submitted',false);
});
// Keep chainability
return this;
};
像这样使用:
$('form').preventDoubleSubmission();
答案 1 :(得分:0)
正如您所发现的,如果您在onclick处理程序中禁用该按钮,它将不会将请求发送到服务器。解决这个问题的简单“黑客”是,而不是立即禁用按钮,使用setTimeout
来安排一个函数运行,比如5ms将禁用按钮;这将允许在禁用按钮之前将请求发送到服务器,同时没有留出足够的时间让某人实际点击它两次。
答案 2 :(得分:0)
两种方式
在Jquery中或通过C#
$("#btnSubmit").live("click",(function(e) {
this.disabled = true;
/Do Something /
this.disabled = false;
return false;}));
protected void btnSubmitClick(object sender, EventArgs e)
{
btnSubmit.Enabled = false;
/Do Something/
btnSubmit.Enabled = true;
}
希望这有帮助
非常感谢 安娜