未捕获的TypeError:Chrome或SCRIPT65535中的非法调用:提交表单时IE中的调用对象无效

时间:2014-02-18 06:27:48

标签: javascript forms internet-explorer google-chrome

我收到Uncaught TypeError:Chrome或SCRIPT65535中的非法调用:提交表单时IE中的调用对象无效。

以下标记重现错误:

<!DOCTYPE html>
<html>
<body>

<p>Enter some text in the fields below, then press the "Submit form" button to submit the form.</p>

<form id="myForm" action="form_action.asp">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br><br>
<input type="button" onclick="myFunction()" value="Submit form">
</form>

<script>
function myFunction()
{
var submit2 = myForm.submit;
submit2();
}
</script>

</body>
</html>

但是换行:

var submit2 = myForm.submit;
submit2();

直接汇总形式myForm.submit()然后所有工作没有错误。

所以如何解决问题对我来说很明显,对我而言,“间接”表单提交导致错误的原因很有意思

1 个答案:

答案 0 :(得分:3)

使用myForm.submit()调用时的submit方法知道上下文是myForm,但是当我们使用submit2()调用它时,没有上下文(全局上下文),因此它给出了错误。

要修复错误,您必须通过将此内容设置为myForm来调用submit2()方法。

示例代码是

var submit2 = myForm.submit;
submit2.call(myForm);

您可以使用电话或申请更改上下文。

更多关于电话和申请的信息:

  1. apply mdn reference
  2. call mdn reference