【发布时间】:2022-03-05 17:44:03
【问题描述】:
我正在学习 JavaScript,但无法在不提交表单的表单内制作按钮。有一个类似的问题here,但指定type="button" 的最流行的答案在我的情况下不起作用,其他答案涉及jQuery,我现在想省略。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script type="text/javascript">
function submit(){
alert("Yo")
}
</script>
</head>
<body>
<form name="myForm" onsubmit="submit()">
<input type="button" value="Submit!" onClick="submit()" />
</form>
</body>
</html>
【问题讨论】:
-
由于您没有使用
type="submit",您的表单提交任何内容的唯一原因是您在单击按钮时确实调用了submit()方法。 (嗯,有点。它实际上是 form.submit())。默认情况下,type="button"的输入不会进行表单提交,除非您真的调用form.submit()。 -
@Tibrogargan 这就是问题所在。一旦我更改了函数名称,它就可以完美运行!如果你把它作为一个答案,我可以接受。
-
这实际上是一个非常有趣的问题。由于函数的范围是在窗口级别,您可能希望您的
onClick="submit()"使用window.submit()方法 - 但在创建输入标记时它解析为form.submit(),因为上下文已更改为表单。我在任何地方都找不到该行为的记录 - 它实际上可能取决于浏览器(或者我只是不知道查看的正确位置) -
@Tibrogargan 我在 Mozilla 和 Chrome 中都进行了测试,尽管我还没有在 IE 中尝试过。但是,如果您确实在任何地方找到了文档,请告诉我,我很乐意阅读!
-
原来这是设计使然。 Scope Changes During HTML Parsing
标签: javascript html forms