使用 jquery 禁用/启用整个表单的提交
Posted
技术标签:
【中文标题】使用 jquery 禁用/启用整个表单的提交【英文标题】:Disable/enable entire form's submit with jquery 【发布时间】:2010-10-12 10:42:16 【问题描述】:当我的表单没有通过验证时,我想禁用表单的提交功能。 我可以通过禁用提交按钮来做到这一点,但这会使回车键处于未选中状态。 我可以设置 .submit(return false);但之后我无法重新启用它。
有什么建议吗?
【问题讨论】:
【参考方案1】:只是 Pim 的简化版(编辑以提取 James 的贡献):
$('#form').submit(formValidated);
【讨论】:
【参考方案2】:我做了以下工作(禁用提交按钮和表单提交):
var condition = true; //check whatever you like
if(condition)
$('input[type=submit]', this).attr('disabled', 'disabled');
$('form').bind('submit',function(e)e.preventDefault(););
else
$('input[type=submit]', this).removeAttr('disabled', 'disabled');
$('form').unbind('submit');
【讨论】:
【参考方案3】:在提交方法里面做检查怎么样:
$('#form').submit (function()
if(formValidated())
return true;
return false;
);
【讨论】:
只是一个你可能已经知道的注释:不要忘记也在服务器端进行验证,因为禁用 javascript 会绕过这个。【参考方案4】:只是尼克的原始答案的简化:
$('#form').submit(formValidated);
【讨论】:
【参考方案5】:这是另一种可能的解决方案:
$('#form').change(function()
(isValid($('#form')) ? $('#submitBtn').attr('disabled',false) : $('#submitBtn').attr('disabled',true)
);
当然,isValid()
会检查您的所有 $('#form')
元素是否符合您的验证规则。我就是这样做的。
【讨论】:
【参考方案6】:不是直接调用提交函数,而是调用一个中间函数并在那里进行检查。
即
var isSubmitable = false;
function submitForm()
if(isSubmitable)
myform.submit();
【讨论】:
以上是关于使用 jquery 禁用/启用整个表单的提交的主要内容,如果未能解决你的问题,请参考以下文章