【问题标题】:Form won't submit return false; [closed]表单不会提交 return false; [关闭]
【发布时间】:2013-03-07 09:50:32
【问题描述】:

在输入和文本区域填写完毕后,我的简单表单将无法提交。为便于阅读而编辑。

$(function () {
    $("#contactform").submit(function () {
        $(":input").not("[type=submit]").removeClass('error').each(function () {
            if ($.trim($(this).val()).length == 0) $(this).addClass('error');

        });            
        if($(document).hasClass("error")){
        return false;
}
    });
});


<form id="contactform" action="success.php" method="post">
  <input type="text" id="name" placeholder="name" autofocus >
  <input type="text" placeholder="email" >
  <textarea placeholder="message" ></textarea>
  <input type="submit">
  </input>
</form>

【问题讨论】:

  • 您认为问题出在哪里?你做了什么来解决它?你能提供一个关于 JSfiddle 的例子吗?您能否在How to Ask 中做更多描述以帮助我们回答您的问题?

标签: jquery html


【解决方案1】:

你应该在返回false之前检查是否有任何错误

$(function () {
    $("#contactform").submit(function () {
        $(":input").not("[type=submit]").removeClass('error').each(function () {
            if ($.trim($(this).val()).length == 0) $(this).addClass('error');    
        });
        // if there is anything with a class of error inside the form
        // can also use $(this).find('.error') - it's the same thing
        if($('.error',this).length){
            // then return false
            return false;
        }
    });
});

http://jsfiddle.net/D4F55/

【讨论】:

    【解决方案2】:

    您正在使用return false; 阻止提交。仅在您想停止提交表单时使用它(例如验证错误等)

    【讨论】:

      【解决方案3】:

      不要每次都使用 return false。

      检查您是否有输入错误,例如

      return !!$('input.error').length;
      

      【讨论】:

      • 我不认为这是一种非常易读的方式。
      • "有没有输入错误"
      • 它可能不容易阅读,但它确实适用于原版没有的地方。
      【解决方案4】:

      不要使用return false;,这会阻止提交。

      把你的代码改成这样:

          $(function () {
          $("#contactform").submit(function (e) {
              $(":input").not("[type=submit]").each(function () {
                  if ($.trim($(this).val()).length == 0){ 
                      $(this).addClass('error');
                     e.preventDefault(); 
                  }
      
              });
      
          });
      });
      

      【讨论】:

      • 这里的基本点是你应该使用return false;,只有当你想阻止表单被提交,当你觉得表单字段没有被提交时你可能想要这样做填满了,因此我把它放在if ($.trim($(this).val()).length == 0){ } 块内......剩下的由你来决定......
      • 哈...您的问题中粘贴了错误的代码:|
      • 这很接近,但它会在第一个错误时停止代码,而不是标记每个有错误的输入。
      • 是的,我也注意到了这一点,但认为这至少可以让表单提交。
      • return false 不只是退出每个循环吗? jsfiddle.net/7cnSM
      猜你喜欢
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多