19

我一直在使用 jquery 1.6 没有问题。今天我切换到 jquery 1.8,突然在尝试提交表单时出现此错误:

TypeError: e[h] is not a function.

形式:

<form method="post" action="login?login" name="login" id="login">
<input class="input" type="text" name="user_mail" id="user_mail" autocomplete="on" />
<input class="input" type="password" name="password" id="password" autocomplete="off" />
<a class="green_button" href="javascript:void(0)" id="login_button">Login</a>
<input type="submit" name="login" id="submit" style="visibility:hidden" />
</form>
<script language="javascript">
$("#login_button").click(function(){
    $("#login").submit();   
});
</script>

我错过了什么吗?

谢谢!

4

6 回答 6

32

删除下面的行。

<input type="submit" name="login" id="submit" style="visibility:hidden" />

更新:

或者如果您必须使用提交输入,那么您需要将 id 更改submit为其他内容。id原因是,如果您有一个带有of的输入元素submit,它将submit使用 HTMLInputElement 为表单设置一个属性。所以你不能调用.submitHTMLFormElement 上的方法。

于 2012-08-16T02:24:51.713 回答
6

我浪费了 3 个小时试图解决同样的问题,我使用 name='submit' 作为我的提交按钮并调用 $("#form_name").submit(); 在一个函数中并得到了错误。有时我忽略的小事情最终会浪费很多时间。

于 2012-10-15T07:29:30.093 回答
3

我想这是因为这条线

<input type="submit" name="login" id="submit" style="visibility:hidden" />

你可以删除它并重试吗?

于 2012-08-16T02:48:36.050 回答
1

当我们在表单中使用提交类型元素时,该元素将被设置为表单的提交属性。所以不能用表单的其他元素调用 submit() 函数。

有两种方法可以做到这一点。第一个只是删除第一个答复中给出的行。

使用 $("#submit").trigger("click"); 而不是 $("#login").submit(); . 它也会在按输入关键字时提交表单。

于 2012-12-27T05:59:57.170 回答
0

您的forminput具有相同的 name 属性值,login.

name将on更改input为其他内容,例如submit. 这应该可以清除您的错误。

于 2012-08-16T02:28:27.077 回答
0

使用 jQuery 1.7(也可能在上面),如果您name还调用了该属性submit,它将中断。

例如

<input type="submit" name="submit" value="Upload">

但是将不起作用:

<input type="submit" name="sendSubmit" value="Upload">

没问题。

于 2017-03-14T14:08:00.387 回答