javascript - 未捕获的类型错误 : Illegal invocation in Chrome or SCRIPT65535: Invalid calling object in IE when submit form

标签 javascript forms internet-explorer google-chrome

我收到未捕获的类型错误: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() 然后所有工作都没有错误。

所以如何解决问题对我来说很清楚,对我来说有趣的是为什么“间接”表单提交会导致错误

最佳答案

myForm.submit() 调用提交方法时知道上下文是 myForm,但是当我们用 submit2() 调用它时,有不是上下文(全局上下文),所以它给出错误。

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

示例代码是

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

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

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

  1. apply mdn reference
  2. call mdn reference

关于javascript - 未捕获的类型错误 : Illegal invocation in Chrome or SCRIPT65535: Invalid calling object in IE when submit form,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21845913/

相关文章:

javascript - onpropertychange是否等同于oninput?

Javascript 验证表单问题

html - IE10 直接写入 'Empty Text Node' 吗?

html - 奇怪的 CSS 问题,内容单元在 IE 中移动到页面底部 - 在 Chrome 和 Firefox 中工作正常

css - Drupal 对齐在 IE 中搞砸了,但在 FF 中效果很好

javascript - 从数组 AngularJS 中获取图像

javascript - JQuery:帮助解决 ".live"和 ".scroll"

html - 如何删除文本输入和提交按钮之间的空格?

javascript - 修改正则表达式以获得最大长度

javascript - 验证 Google 表单中的电子邮件