0

如何阻止表单提交?我对我的表单进行了一些验证,如果输入不正确,则表单不应该提交......在我的 HTML 中,单击提交时我有这个:

<a href="#" onclick="setTimeout(function(){document.getElementById('form_4').submit()}, 1000);" style="position:static" class="btn-more">Vælg</a>

我的脚本如下所示:

$("#form_4 a.btn-more").click(function (e) {

    //Validate required fields
    for (i = 0; i < required.length; i++) {
        var input = $('#' + required[i]);

        if ((input.val() == "") || (input.val() == emptyerror)) {
            input.addClass("needsfilled");
            input.val(emptyerror);
            errornotice.fadeIn(750);
            e.stopPropagation();
            return false;
        } else {
            input.removeClass("needsfilled");
        }
    }
    //if any inputs on the page have the class 'needsfilled' the form will not submit
    if ($(":input").hasClass("needsfilled")) {
        return false;
    } else {
        errornotice.hide();
        return true;
    }
});
4

5 回答 5

2

采用 :

e.preventDefault();  

在关闭点击功能之前或开始时

$("#form_4 a.btn-more").click(function(e){  
    e.preventDefault();  
    //rest of the content
}

您还应该setTimeout function按照您的方式更改它,它总是会提交表单。改成 :

HTML:

<a href="#" style="position:static" class="btn-more">Vælg</a>

脚本 :

$("#form_4 a.btn-more").click(function (e) {

    //Validate required fields
    for (i = 0; i < required.length; i++) {
        var input = $('#' + required[i]);

        if ((input.val() == "") || (input.val() == emptyerror)) {
            input.addClass("needsfilled");
            input.val(emptyerror);
            errornotice.fadeIn(750);
            e.stopPropagation();
            return false;
        } else {
            input.removeClass("needsfilled");
        }
    }
    //if any inputs on the page have the class 'needsfilled' the form will not submit
    if ($(":input").hasClass("needsfilled")) {
        e.preventDefault();  
        return false;
    } else {
        errornotice.hide();
        return true;
    }
});
于 2013-08-28T10:24:02.743 回答
0

切勿将 javascript 函数与 HTML 内联一起使用。将所有 JS 放在一个 js 文件中。

然后,像这样使用你的 if

 if ($(":input").hasClass("needsfilled")) 
    {
        return false;
    } 
    else 
    {
        errornotice.hide();
        $("#form_4").submit()
    }

一切正常后只需调用表单提交即可。

于 2013-08-28T10:28:56.787 回答
0
onclick="return false";

这将阻止提交。

return falsee.preventDefault从 jQuery 事件处理程序中调用和调用e.stopPropagation传递的 jQuery.Event 对象实际上是相同的。

或者

$("#form_4 a.btn-more").click(function (e) {
 return false;
}
于 2013-08-28T10:29:14.693 回答
0

在线上

errornotice.hide();
return true;

删除返回真;并添加行

document.getElementById('form_4').submit();

或者

$(".form4").submit();

并从链接标签中删除 onlick 功能

<a href="#"  style="position:static" class="btn-more">Vælg</a>
于 2013-08-28T10:29:25.920 回答
-1
$(".form4").on("submit", function () {
});

如果值返回false,这不是提交

于 2013-08-28T10:25:20.023 回答