【问题标题】:Disable/enable entire form's submit with jquery使用 jquery 禁用/启用整个表单的提交
【发布时间】:2010-10-12 10:42:16
【问题描述】:

当我的表单没有通过验证时,我想禁用表单的提交功能。 我可以通过禁用提交按钮来做到这一点,但这会使回车键处于未选中状态。
我可以设置 .submit(return false);但之后我无法重新启用它。

有什么建议吗?

【问题讨论】:

    标签: jquery validation


    【解决方案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();
               }
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-07-23
              • 2010-12-08
              • 1970-01-01
              • 1970-01-01
              • 2011-09-29
              • 2014-11-28
              相关资源
              最近更新 更多