在我的客户端页面附上一个监听器提交按钮:禁用提交按钮取消提交事件?
$(function() {
$('button[type="submit"]').click(submitButtonClicked);
});
,我想禁用按钮和所有其他表单输入元素单击该按钮时:
function submitButtonClicked(ev) {
if ($(this).hasClass('disabled')) {
return false; // Reject actions when disabled, preventDefault() and stopPropagation()
}
$('form').find('input, select, textarea, button')
.prop('disabled', true) // This call is the culprit?
.blur();
return true; // Submit form.
}
上述功能似乎吞噬了事件,并且没有表单提交到达服务器。但是,如果我删除了prop('disabled', true)
,表单提交就很好,但所有表单元素都保持启用状态并处于被动状态。
这是为什么?我认为返回true
将导致事件ev
继续传播,无论是否禁用按钮。
而不是禁止输入,你可以把它们放到一个只读状态这里提到:http://stackoverflow.com/questions/7730695/whats-the-difference-between-disabled-disabled-and-只读 - 只读换HT。它应该如下:'$('form')。find('input,select,textarea,button')。prop('readonly',true).blur();'。也许这将阻止用户更改内容,但允许请求继续处理?... – War10ck
我不想发布此作为答案,因为它不能真正回答手头的问题。但是,作为一种解决方法,您可以用'$('form')。submit()'替换'return true'。不再禁用按钮后,我会得到与您相同的结果。我认为这是为了防止意外发生的提交。 –