-5

inputとtextareaが入力された後、私の単純なフォームは送信されません。読みやすくするために編集。

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

毎回returnfalseを使用しないでください。

次のようなエラーのある入力があるかどうかを確認します

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 に答える