keyup()
为"keyup"事件绑定一个处理函数,或者触发元素上的"keyup"事件。
.keyup(handler(eventObject))
- handler(eventObject)类型:Function()。每次事件触发时会执行的函数。
.keyup([eventData ], handler(eventObject))
- eventData类型: PlainObject。一个对象,它包含的数据键值对映射将被传递给事件处理程序。
- handler(eventObject)类型:Function()。每次事件触发时会执行的函数。
.keyup()
- 这个方法不接受任何参数。
这个方法的前两个用法是.bind('keyup', handler)
的快捷方式,第3个不带参数的用法是.trigger('keyup')
的快捷方式。
当用户在一个元素上释放按键的时候,keyup
事件就会被附加到这个元素。它可以绑定到任何元素,但该事件只是发送到获取焦点的元素上。不同的浏览器中,可获得焦点的元素略有不同,但是表单元素总是能获取焦点,所以对于此事件类型表单元素是最合适的。
举个例子,看下面的代码
<form> <input id="target" type="text" value="Hello there" /> </form> <div id="other"> Trigger the handler </div>
事件处理函数可以绑定在输入框上:
$('#target').keyup(function () { alert('Handler for .keyup() called.'); });
现在当光标插入点位于表单域并一个键被按下并且释放时,警告将被显示:
Handler for .keyup()called.
应用不带参数的.keyup()
,我们可以手动触发这个事件:
$('#other').click(function () { $('#target').keyup(); });
这些代码执行后,点击Trigger the handler同样警报显示。
如果需要任何按键被捕获(例如,要实现网页全局上的快捷键),那么把这个事件附加到document
对象上是非常有用的。所有的按键事件都会沿着各自的 DOM 树冒泡到document
对象上,除非明确停止。
要确定哪个键被按下,我们可以检测传递给处理函数的event 对象。而浏览器使用不同的属性来存储这些信息,jQuery的规范了.which
属性,以便我们能够可靠地使用它来检索关键代码。此代码对应一个键盘上的按键,包括像方向键这种特殊键的代码,如果要捕获实际输入文本,.keypress()
可能是一个更好的选择。
Additional Notes(其他注意事项):
.keyup()
方法只是作为.on("keyup", handler)
的一个速记写法,移除该事件可以使用.off("keyup")
。
例子
当在文本框中松开一个按键时,显示 keyup 事件的 event 对象。(使用一个简单的$.print 插件)。
<!DOCTYPE html> <html> <head> <style> fieldset { margin-bottom: 1em; } input { display: block; margin-bottom: .25em; } #print-output { width: 100%; } .print-output-line { white-space: pre; padding: 5px; font-family: monaco, monospace; font-size: .7em; } </style> <script src="https://www.lanmper.cn/static/js/jquery-3.5.0.js"></script> </head> <body> <form> <fieldset> <label for="target">Type Something:</label> <input id="target" type="text" /> </fieldset> </form> <button id="other"> Trigger the handler </button> <script type="text/javascript" src="/resources/events.js"></script> <script>var xTriggered = 0; $('#target').keyup(function (event) { xTriggered++;var msg = 'Handler for .keyup() called ' + xTriggered + ' time(s).'; $.print(msg, 'html'); $.print(event); }).keydown(function (event) {if (event.which == 13) { event.preventDefault(); } }); $('#other').click(function () { $('#target').keyup(); });</script> </body> </html>