【问题标题】:Onchange event that does not wait for input box to lose focus不等待输入框失去焦点的 onchange 事件
【发布时间】:2011-12-02 00:49:18
【问题描述】:

在文本框失去焦点之前,不会触发 HTML 输入框的 onchange 事件。有没有办法让它在内容发生变化时立即触发?

以下是 onchange 在焦点丢失后触发的示例:http://jsfiddle.net/McjqW/

【问题讨论】:

  • 您没有提供太多上下文,因此很难知道这是否适用,但请注意,您所提议的内容通常存在重大的可访问性问题(例如:屏幕阅读器用户需要能够探索选择中的选项)

标签: javascript jquery html


【解决方案1】:

您可以改用onkeyup

<input type="text" id="fname" onkeyup="upperCase(this.id)">

http://jsfiddle.net/McjqW/1/

【讨论】:

  • 谁能解释一下为什么my edit to this fiddle 不起作用?
  • @vault 这是因为需要将 javascript 加载类型(单击 JS 窗口一角的设置按钮)设置为“in head”才能使您的代码正常工作 - jsfiddle.net/McjqW/15
  • 谢谢。它也适用于“体内”,这就是我想要的。
【解决方案2】:

您正在寻找onkeypressonkeydown 事件。请注意,此事件不是标准的,不同的浏览器可能会以不同的名称公开此功能。 DOM 3 级标准定义了一个 keypress 事件,这将是“答案”,但我不能保证浏览器支持。

更新: onkeypress reportedly enjoys wide support.

【讨论】:

  • 完美。谢谢你。知道哪些浏览器支持,哪些不支持?
  • 如果您想在按下完成后触发代码,甚至可以使用 onkeyup 事件。
  • keypress 在所有主流浏览器中都实现了。但是,可以在不使用键盘的情况下更改输入的值:例如,粘贴和拖放。 HTML5 input 事件解决了这个问题。
  • @TimDown:感谢您的提醒和我的 +1。
【解决方案3】:

您需要 HTML5 input 事件。它不是完全跨浏览器,但 IE here 和here

【讨论】:

    猜你喜欢
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多