我如何阻止一个表单提交使用jquery?

我尝试了所有的方法——看看下面我尝试过的3种不同的方法,但都不起作用:

    $(document).ready(function() { 

            //option A
            $("#form").submit(function(e){
                e.preventDefault();
            });

            //option B
            $("#form").submit(function(e){
                stopEvent(e);
            });

            //option C
            $("#form").submit(function(){
                return false;
            });
    });

会有什么问题呢?

更新-这是我的html:

    <form id="form" class="form" action="page2.php" method="post"> 
       <!-- tags in the form -->
       <p class="class2">
           <input type="submit" value="Okay!" /> 
       </p>
    </form>

这里有什么问题吗?


当前回答

您可以简单地检查表单是否有效,如果是,运行提交逻辑,否则显示错误。

HTML

<form id="form" class="form" action="page2.php" method="post">
    <input type="text" class="check-validity" value="" />
    <input type="text" class="check-validity" value="" />
    <input type="text" class="check-validity" value="" />
    <input type="text" class="check-validity" value="" />
    <input type="text" class="check-validity" value="" />
    <input type="text" class="check-validity" value="" />
    <input type="text" class="check-validity" value="" />

    <input type="submit" value="Okay!" />
</form>

Javascript

    $(document).ready(function () {
        var isFormValid = true;

        function checkFormValidity(form){
            isFormValid = true;
            $(form).find(".check-validity").each(function(){
                var fieldVal = $.trim($(this).val());
                if(!fieldVal){
                    isFormValid = false;
                }
            });
        }


        //option A
        $("#form").submit(function (e) {
            checkFormValidity("#form");
            if(isFormValid){
                alert("Submit Form Submitted!!! :D");
            }else{
                alert("Form is not valid :(");
            }
            e.preventDefault();
        });
    });

其他回答

防止默认/防止表单提交使用

e.preventDefault();

停止事件冒泡使用

e.stopPropagation();

为了防止表单提交“返回错误”也应该工作。

您忘记了表单id,它就工作了

$('form#form').submit(function(e){
   e.preventDefault();
   alert('prevent submit');             
});

将事件附加到submit元素,而不是form元素。 例如,在你的html中这样做

$('input[type=submit]').on('click', function(e) {
    e.preventDefault();
});

信息是缺失如何防止表单提交,然后恢复情况,即允许表单提交以后。

这里有一个例子:

var savebtn_clicked;

$('form#commentform').submit( function(e) {
    return savebtn_clicked;
});

$('#savebtn').click( function() {
    savebtn_clicked = true;
    $('#form#commentform').submit();
});

在我的例子中,每个按钮都会触发表单。通过上面的代码,我可以控制哪个按钮允许提交表单。

我也遇到过同样的问题,我用这种方法解决了(虽然不优雅,但很有效):

$('#form').attr('onsubmit','return false;');

在我看来,它的优势在于,你可以在任何你想要的时候还原这种情况:

$('#form').attr('onsubmit','return true;');