JavaScript:FormonSubmit在调用函数时不起作用';提交';
我试图在单击表单的submit按钮时调用JavaScript函数 出于某种原因,当函数名为“submit”时不会调用该函数,但当函数名为其他名称时,它会工作 我还应该注意,当按钮从表单标签中取出时,该函数也可以工作 有人能解释一下为什么当它在表单中时,它不能与该名称一起使用吗 代码如下:JavaScript:FormonSubmit在调用函数时不起作用';提交';,javascript,html,forms,Javascript,Html,Forms,我试图在单击表单的submit按钮时调用JavaScript函数 出于某种原因,当函数名为“submit”时不会调用该函数,但当函数名为其他名称时,它会工作 我还应该注意,当按钮从表单标签中取出时,该函数也可以工作 有人能解释一下为什么当它在表单中时,它不能与该名称一起使用吗 代码如下: <!DOCTYPE HTML> <html> <head> <script type="text/javascript">
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
function submit(){
console.log('test');
}
</script>
</head>
<body>
<form>
<input type="text"/>
<input type="submit" onclick="submit()"/>
</form>
</body>
</html>
函数提交(){
console.log('test');
}
因为submit()
是在core JS中提交表单的保留函数
例如,如果表单的id类似于myform
,则可以通过JS提交:
document.form['myform'].submit();
因此,调用该函数实际上是提交表单,而不是调用自定义函数
编辑:我忘了提到,它只在表单内部工作,因为它正在调用表单的提交功能。除此之外,它不再可用(因为body标记没有提交功能)。表单元素被放置在表单中侦听器的作用域链上,就像通过以下方式:
with (form) {
/* run listener code */
}
因此,标识符submit首先在处理程序的上下文中解析,然后在范围链的其余部分之前在表单上解析。这是表单所独有的,可以在以下内容中看到:
<form>
<input name="foo">
<input type="button" value="Do click" onclick="
function submit(){console.log('click')};
submit();
">
</form>
单击按钮在侦听器中运行submit函数,删除函数声明将运行表单的submit方法。这是表单所独有的
请注意,当直接调用表单的submit方法时,不会调用表单的submit处理程序
在表单之外,标识符submit以正常方式解析。提交按钮也将根据表单标记的属性进行提交,因此最符合要求的方式是删除
onclick
并添加onsubmit=“myFunction();return false”
@evan.stoddard-no它不会。调用表单的submit方法不会分派submit事件,因此不会调用submit侦听器。@RobG谢谢。我把问题看得太快了,没有抓住要点。我认为OP想要使用自定义方法来做一些类似ajax的事情。我道歉。