按Enter键时,onClick不会仅使用一个输入触发

Dan*_*ira 5 javascript events internet-explorer internet-explorer-7

我在Internet Explorer 7中遇到问题.

当我有一个包含两个或更多 的表单input[type=text]并按Enter键时,事件按以下顺序发生:

  1. 提交按钮(onClick)
  2. 形式(onSubmit)

示例代码:

<form onSubmit="{alert('form::onSubmit'); return false;}">
    <input type="text">
    <input type="text">
    <input type="submit" onClick="{alert('button::onClick');}">
</form>
Run Code Online (Sandbox Code Playgroud)

如果我只有一个 input[type=text]而且我按下输入提交按钮onClick事件不会触发.示例代码:

<form onSubmit="{alert('form::onSubmit'); return false;}">
    <input type="text">
    <input type="submit" onClick="{alert('button::onClick');}">
</form>
Run Code Online (Sandbox Code Playgroud)

The*_*urf 5

按钮的onclick应该(我认为)只有在按钮被实际点击时(或当焦点在它上面并且用户点击回车时)才会触发,除非你添加了逻辑来改变它.

添加额外的文本框是否可能会更改元素的Tab键顺序(在这种情况下可能使按钮成为默认控件)?


and*_*wrk 1

如果您希望代码在用户按 Enter 键时运行,只需使用 onSubmit 处理程序。

如果您希望代码在用户按下按钮时运行,而不是在用户按下 Enter 时运行,请使用除 type="submit" 之外的按钮。