调用preventDefault()后无法调用submit()

时间:2018-02-05 01:41:34

标签: javascript jquery

我在点击提交按钮后尝试验证表单,因此我阻止表单自动发布并使用preventDefault()刷新页面。在调用preventDefault()之后,我调用另一个函数进行验证,如下所示:

$("#submit").click(function(e) {

    e.preventDefault();

    validate();

});

此处,#submit是提交输入元素的ID。

validate()结束时,我尝试在表单元素submit()上调用#homeForm,但它似乎无法触发。

validate() {

....

console.log('test'); // this is firing

$('#homeForm').submit();
}

我使用了其他一些Stack Overflow答案,包括this one来解决这个问题,但我不确定为什么它不起作用。什么可能阻止submit()函数被触发?

修改:我已在HTML中添加了一些此表单的内容

<form id="homeForm">
....

    <input id="submit" class="submit" type="submit" name="submit" value="Submit" action="javascript:void(0);">
</form>

2 个答案:

答案 0 :(得分:2)

表单action属性应属于<form>元素,并且应该(可能)引用网址

答案 1 :(得分:0)

更简单的方法是使用提交按钮调用validate()函数,然后在验证函数中,如果所有函数都经过验证,则使用$('#homeForm').submit()提交表单。通过这种方式,您永远不会使用preventDefault,无论出于何种原因,我认为这是{

>。

编辑:当然,您的按钮类型不应为此“提交”。