【问题标题】:Ensuring form does not submit on enter but instead runs function确保表单不会在输入时提交,而是运行函数
【发布时间】:2014-08-27 16:43:56
【问题描述】:

认为我理解“按钮”应该是实现我想要的结果的正确方法;不知何故,它们应该与提交按钮不同。但是我不明白如何得到我想要的结果。

我有以下:

<form action="http://www.google.com">
    <input type="text" id="box1">
    <button id="button1" onclick="myFunction()">Submit</button>
</form>

如果用户单击该按钮,该函数将正确运行。 (该函数最终从 box1 中提取值)并对其进行处理)。但是,如果当用户将光标放在文本框内时,他们按键盘上的 Enter 键,表单就会提交并链接到 google。

我怎样才能使在 box1 中按 enter 不会更改页面,而是运行 myFunction?

【问题讨论】:

  • 你想在 javascript 中使用它还是使用 jQuery 也可以?
  • 要确保按钮不提交页面,请使用

标签: javascript html forms button submit


【解决方案1】:

添加适当的事件处理程序并改为监听提交事件

<form action="http://www.google.com" id="myForm">
    <input type="text" id="box1">
    <button id="button1">Submit</button>
</form>

<script type="text/javascript">
    document.getElementById('myForm').addEventListener('submit', function(event) {
        event.preventDefault();

        myFunction()

    }, false);
</script>

FIDDLE

【讨论】:

  • 知道为什么该代码在 FIDDLE 中可能对我有用,但在我的实际测试环境中对我不起作用?在我的测试环境中,当我单击按钮或按回车键时,我被定向到谷歌。我对此感到非常沮丧,并希望得到任何帮助。这是我的 FIDDLE 的链接和我在 notepad++ 中的代码的 imgur 快照的链接。小提琴:jsfiddle.net/zb5gv2vn Imgur:imgur.com/8bOCsBB
  • 您是否将脚本放置在 DOM 中的元素之后,如我的示例所示?
  • 我没有,现在我改变了它的工作原理。非常感谢。您是否介意给我链接或简要解释一下为什么需要这样做。
  • 所有元素在 DOM 中遇到时都会被评估,包括脚本标签。当脚本标签出现在元素之前时,元素还不存在,所以getElementById 失败,因为 DOM 中没有元素 yet,它会在后面出现。因此,要么将 script 标签放在元素之后,要么使用 DOM 就绪处理程序 window.onload 或类似的东西来等待所有元素在脚本运行之前加载。
猜你喜欢
  • 1970-01-01
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-10
  • 1970-01-01
相关资源
最近更新 更多