在Chrome中提交表单后,如何使用Javascript禁用按钮
How can I use Javascript to disable a button after submitting a form in Chrome?
我有一个web表单,我想防止多次提交。在生产中,这是通过具有onclick="this.disabled=true"
属性的提交按钮来实现的。这样,如果提交了表单,然后用户返回(可能是为了"编辑"数据,我们的用户似乎不时想这样做(,则提交按钮将保持禁用状态。
这在Firefox、Safari和Internet Explorer中运行良好。然而,在Chrome中,禁用似乎在表单提交之前触发,从而阻止了这种情况的发生。为了解决这个问题,我将按钮的onclick
操作更改为:
this.disabled=true; $('myform').submit()
这导致表单被提交,但当我使用Chrome的后退按钮返回表单页面时,该按钮不再被禁用。我在提交之前在表单中输入的值仍然存在,所以我猜测Chrome必须有选择地重新加载DOM。
有什么方法可以在Chrome中用Javascript实现我想要的吗?当然,还有其他方法可以解决这个问题,但禁用按钮有一个非常吸引人的简单性
我已经在Linux中的Chrome 12.0.742.100和MacOS X中的12.0.742.112中进行了测试。
我更喜欢这个
http://jsfiddle.net/mplungjan/sCgZ9/
脚本:
$("form").submit(function() {
$("#subbut").hide();
$("#submitted").show();
});
CSS:
#submitted { display:none }
HTML:
<form action="http://www.google.com/" target="_blank">
<input type="submit" id="subbut" /><span id="submitted">Form submitted</span>
</form>
如果您想决定显示或不显示按钮,您可以设置cookie
考虑使用表单的提交来禁用按钮。
无论如何,你必须在服务器上处理这个问题,还有其他方法可以在不使用提交按钮的情况下提交表单。禁用该按钮不会阻止用户重新提交表单。
使用javascript
<form name ="myform" method="POST" action="youractionhere" onSubmit="document.getElementById('submit').disabled=true;">
<input type="submit" name="submit" value="Submit" id="Submit">
</form>
使用jQuery
$("form").each(function() {
$(this).find("button:submit").click(function() {
if($('input[type="submit"]').hasClass("disabled"))
return false;
$('input[type="submit"]').addClass("disabled");
return true;
});
});
我用来做这个
html
<form action="/" method="post">
<button type="button" class="submit-form" >Save</button>
</form>
javascript
var button = document.querySelector('.submit-form')
button.addEventListener("click", function(){
this.setAttribute('disabled',true);
var form = this.closest('form')
form.submit();
},false);
jquery
$(document).on("click",".submit-form",function(){
$(this).attr('disabled',true);
$form = $(this).closest('form');
$form.submit();
});
相关文章:
- 如何在javascript上使用flak-babel进行翻译
- 在javascript中使用命名空间
- 操作员”;新的“;根据我想在几个JavaScript文件中使用的类,在JavaScript中使用
- 在JavaScript中使用对象作为属性键
- 为什么不'我们在javascript中使用函数参数的数据类型
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 如何通过安全的https连接在javascript中使用基于soap xml的Web服务
- 如何在javascript中使用不止一个函数
- 在 Jquery/Javascript 中使用多个 OR (||) 运算符时如何设置变量
- 当null应该在javascript中使用而不是未定义时
- Javascript 变量使用 jquery 查找变量
- 避免在if condition-Javascript中使用函数
- 在javascript中使用split函数希望在页面加载时拆分url
- 在Javascript中使用全局变量作为缓存是很好的
- 在javascript中使用方括号表示法的嵌套对象
- 如何在javascript中使用嵌套函数作为生成器(使用“inner”yields)
- 如何分割由JavaScript中使用正则表达式的多个部分组成的字符串
- 在javascript中使用json数据导致问题
- 在javascript中使用小数
- 在 JavaScript 中使用重排隐藏元素,它与 CSS 隐藏属性有何不同