我编写了此代码以在单击后禁用我网站上的提交按钮:
$('input[type=submit]').click(function(){
$(this).attr('disabled', 'disabled');
});
不幸的是,它不会发送表格。我怎样才能解决这个问题?
编辑 我想绑定提交,而不是表单:)
我编写了此代码以在单击后禁用我网站上的提交按钮:
$('input[type=submit]').click(function(){
$(this).attr('disabled', 'disabled');
});
不幸的是,它不会发送表格。我怎样才能解决这个问题?
编辑 我想绑定提交,而不是表单:)
这样做onSubmit()
:
$('form#id').submit(function(){
$(this).find(':input[type=submit]').prop('disabled', true);
});
发生的事情是您在实际触发提交事件之前完全禁用按钮。
您可能还应该考虑使用 ID 或 CLASSes 命名您的元素,这样您就不会选择页面上所有提交类型的输入。
演示: http : //jsfiddle.net/userdude/2hgnZ/
(请注意,我使用preventDefault()
andreturn false
因此该示例中的表单并未实际提交;在您使用时不要使用它。)
特别是如果有人在以下方面面临问题Chrome
:
您需要做的就是使用元素中的onSubmit
标签<form>
来设置提交按钮disabled
。这将允许 Chrome 在按下按钮后立即禁用该按钮,并且表单提交仍将继续......
<form name ="myform" method="POST" action="dosomething.php" onSubmit="document.getElementById('submit').disabled=true;">
<input type="submit" name="submit" value="Submit" id="submit">
</form>
禁用的控件不提交它们的值,这无助于了解用户是否单击了保存或删除。
所以我将按钮值存储在一个隐藏中,它确实被提交了。隐藏的名称与按钮名称相同。我将所有按钮都称为button
.
例如 <button type="submit" name="button" value="save">Save</button>
基于此,我找到了here。只需将单击的按钮存储在变量中。
$(document).ready(function(){
var submitButton$;
$(document).on('click', ":submit", function (e)
{
// you may choose to remove disabled from all buttons first here.
submitButton$ = $(this);
});
$(document).on('submit', "form", function(e)
{
var form$ = $(this);
var hiddenButton$ = $('#button', form$);
if (IsNull(hiddenButton$))
{
// add the hidden to the form as needed
hiddenButton$ = $('<input>')
.attr({ type: 'hidden', id: 'button', name: 'button' })
.appendTo(form$);
}
hiddenButton$.attr('value', submitButton$.attr('value'));
submitButton$.attr("disabled", "disabled");
}
});
这是我的IsNull
功能。使用或替换您自己的 IsNull 或 undefined 版本等。
function IsNull(obj)
{
var is;
if (obj instanceof jQuery)
is = obj.length <= 0;
else
is = obj === null || typeof obj === 'undefined' || obj == "";
return is;
}
这应该在您的应用程序中处理它。
$(":submit").closest("form").submit(function(){
$(':submit').attr('disabled', 'disabled');
});
简单有效的解决办法是
<form ... onsubmit="myButton.disabled = true; return true;">
...
<input type="submit" name="myButton" value="Submit">
</form>
来源:这里