我写了这段代码,在点击后禁用我网站上的提交按钮:
$('input[type=submit]').click(function(){
$(this).attr('disabled', 'disabled');
});
不幸的是,它不会发送表单。我该如何解决这个问题呢?
编辑我想绑定提交,而不是表单:)
发布于 2011-04-17 10:33:48
Do it onSubmit()
$('form#id').submit(function(){
$(this).find(':input[type=submit]').prop('disabled', true);
});
实际发生的情况是,在按钮实际触发提交事件之前,您完全禁用了该按钮。
您可能还应该考虑使用ID或CLASSes命名元素,这样就不会在页面上选择所有submit类型的输入。
Demonstration: http://jsfiddle.net/userdude/2hgnZ/
(注意,我使用了preventDefault()
和return false
,所以在本例中表单不会实际提交;在使用时请不要使用它。)
发布于 2014-10-20 18:57:29
如果某人在 Chrome
**:**中遇到问题,则使用
要解决这个问题,需要在<form>
元素中使用onSubmit
标记来设置submit按钮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>
发布于 2014-05-06 09:16:47
禁用的控件不提交它们的值,这无助于知道用户是否单击了保存或删除。
所以我将按钮值存储在一个被提交的隐藏的。隐藏项的名称与按钮名称相同。我把我所有的按钮都叫做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;
}
https://stackoverflow.com/questions/5691054
复制相似问题