-5

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

$(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>
4

4 回答 4

1

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

于 2013-03-18T21:32:57.250 回答
1

不要每次都使用 return false。

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

return !!$('input.error').length;
于 2013-03-18T21:33:35.283 回答
1

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

将您的代码更改为以下内容:

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

        });

    });
});
于 2013-03-18T21:34:01.597 回答
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/

于 2013-03-18T21:48:45.777 回答