【问题标题】:Tab onto ASP button and press enter to fire button doesn't fire onClick在 ASP 按钮上按 Tab 并按 Enter 以触发按钮不会触发 onClick
【发布时间】:2013-02-21 17:53:11
【问题描述】:

我有一个在服务器端创建的 asp 按钮,并且我已将其 OnClientClick 事件设置为触发 Javascript 函数。 它在页面上呈现 onClick 事件正确包含对 Javascript 函数的调用,当我单击按钮时,它一切正常。

当我点击按钮并按回车键时会出现问题。它提交表单,但它不会触发 onclick 事件,所以我的 Javascript 没有被调用。

我尝试将 onKeyPress 和 onKeyDown 分配给按钮,但这不起作用。 这一定是我错过了一些简单的事情,但我只是在这里画一个空白。

感谢您的帮助,谢谢。

这是为按钮生成的 html:

    <input type="submit" name="SaveButtonTop" value="Save"
onclick="javascript:return ClickSubmitBtn();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;SaveButtonTop&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" id="SaveButtonTop" />

【问题讨论】:

  • 旁白:由于 JavaScript 是唯一可以在 onclick 事件中运行的东西,因此您应该省略“javascript:”部分。
  • 说得有道理,好点子!

标签: javascript button onclick keypress


【解决方案1】:

您正在使用提交按钮,因此它将提交。您必须取消您正在调用的函数中按钮事件的默认操作,或者使用常规按钮,而不是提交。

见:http://css-tricks.com/return-false-and-prevent-default/

【讨论】:

  • 感谢您的回复 - 我现在已经设法让它生成一个普通按钮,但同样,即使有一个 onclientclick、一个 onkeypress 和一个不再回发的 onclick 事件,它仍在执行相同的。如果我用鼠标单击按钮,onclick 事件会调用我的 javascript,它会触发我的调试器并正确执行所有操作。但是,如果我点击按钮并按回车键,它只会将页面发回而不做任何客户端操作。我一直认为 enter 键触发了正常的点击事件,但我显然错了。关于这个还有其他想法吗?谢谢
  • 一个技巧是防止 enter=submit 有一个隐藏的额外文本字段,它什么都不做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多