javascript onkeyup和onkeydown用法区别
在js中onkeyup和onkeydown是我们常用的两个方法了,下面我来给各位朋友介绍它们两的用法与区别吧,有需要了解的朋友可参考。
onkeyup
onkeyup 事件会在键盘按键被松开时发生。
语法:
onkeyup="SomeJavaScriptCode"参数 描述
SomeJavaScriptCode 必需。规定该事件发生时执行的 JavaScript。
支持该事件的 HTML 标签:
- <a>, <acronym>, <address>, <area>, <b>, <bdo>, <big>, <blockquote>, <body>,
- <button>, <caption>, <cite>, <code>, <dd>, <del>, <dfn>, <div>, <dt>, <em>,
- <fieldset>, <form>, <h1> to <h6>, <hr>, <i>, <input>, <kbd>, <label>, <legend>,
- <li>, <map>, <object>, <ol>, <p>, <pre>, <q>, <samp>, <select>, <small>,
- <span>, <strong>, <sub>, <sup>, <table>, <tbody>, <td>, <textarea>, <tfoot>,
- <th>, <thead>, <tr>, <tt>, <ul>, <var>
支持该事件的 JavaScript 对象:document, image, link, textarea实例,当您在例子中的输入域中键入字符时,字符会被更改为大写(逐一地),代码如下:
- <html>
- <head>
- <script type="text/javascript">
- function upperCase(x)
- {
- var y=document.getElementById(x).value
- document.getElementById(x).value=y.toUpperCase()
- }
- </script>
- </head>
- <body>
- 输入您的姓名: <input type="text" id="fname" onkeyup="upperCase(this.id)" />
- </body>
- </html>
onkeydown
定义和用法
onkeydown 事件会在用户按下一个键盘按键时发生。
语法:
onkeydown="SomeJavaScriptCode"参数 描述
SomeJavaScriptCode 必需。规定该事件发生时执行的 JavaScript。
支持该事件的 HTML 标签:
- <a>, <acronym>, <address>, <area>, <b>, <bdo>, <big>, <blockquote>, <body>,
- <button>, <caption>, <cite>, <code>, <dd>, <del>, <dfn>, <div>, <dt>, <em>,
- <fieldset>, <form>, <h1> to <h6>, <hr>, <i>, <input>, <kbd>, <label>, <legend>,
- <li>, <map>, <object>, <ol>, <p>, <pre>, <q>, <samp>, <select>, <small>,
- <span>, <strong>, <sub>, <sup>, <table>, <tbody>, <td>, <textarea>, <tfoot>,
- <th>, <thead>, <tr>, <tt>, <ul>, <var>
支持该事件的 JavaScript 对象:
document, image, link, textarea提示和注释
浏览器差异:Internet Explorer 使用 event.keyCode 取回被按下的字符,而 Netscape/Firefox/Opera 使用 event.which。
实例,在本例中,用户无法在输入框中键入数字,代码如下:
- <html>
- <body>
- <script type="text/javascript">
- function noNumbers(e)
- {
- var keynum
- var keychar
- var numcheck
- if(window.event) // IE
- {
- keynum = e.keyCode
- }
- else if(e.which) // Netscape/Firefox/Opera
- {
- keynum = e.which
- }
- keychar = String.fromCharCode(keynum)
- numcheck = /d/
- return !numcheck.test(keychar)
- }
- </script>
- <form>
- <input type="text" onkeydown="return noNumbers(event)" />
- </form>
- </html>
从上面积们可以看得出来onkeydown是按下的时候触发的,这个时候键值没有输出来。 onkeyup是按键抬起的时候执行的,这个时候键值已经有了。和按多长时间没关系,比如你给输入框加这2个事件.
- <input type="text" id="test1" onkeydown="alert(this.value);"/>
- <input type="text" id="test2" onkeyup="alert(this.value);"/>
你看看这二个不同的运行结果就明白了,代码如下:
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- <input type="text" id="test1" onkeydown="alert(this.value);"/>
- <input type="text" id="test2" onkeyup="alert(this.value);"/>
- </body>
- </html>
这里给出一段测试代码,代码如下:
- <script type="text/javascript">
- document.onkeydown = function(){
- document.getElementById("test").innerHTML += "keydown<br/>";
- }
- document.onkeyup = function(){
- document.getElementById("test").innerHTML += "keyup<br/>";
- }
- document.onkeypress = function(){
- document.getElementById("test").innerHTML += "keypress<br/>";
- }
- </script>
- <div id="test"></div>
- //测试结果为:
- keydown
- keypress
- keyup
显而易见,事件发生的顺序是: keydown --> keypress --> keyup
当按住一个键一段时间后再放开时,结果为:
keydown
keypress
keydown
keypress
keydown
keypress
keydown
keypress
...
keyup