使用 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 禁用/启用整个表单的提交的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jquery 启用表单的提交按钮?

如果单击任何表单元素,则使用 Jquery 启用提交按钮

使用 Jquery 在第一次单击时禁用提交按钮

jquery:重置后禁用/启用按钮不起作用

jQuery UI 禁用整个页面上的所有提交按钮

表单:在表单提交之前使用 jQuery 验证特殊情况