博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有关onkeydown onkeypress onkeyup oninput 以及循环绑定的小笔记
阅读量:5030 次
发布时间:2019-06-12

本文共 1471 字,大约阅读时间需要 4 分钟。

keydown keypress keyup oninput 小总结

事件触发顺序:keydown - > keypress - > oninput -> keyup

在console运行,输入12,每四行为按下键盘后松开,输入功能键的话只有onkeydown和onkeyup,长按某个键的话onkeydown会被一直触发

在console中的结果
当我们监听前面三个事件时,最想得到的数据信息就是键码(keyCode)字符编码(charCode)了。

  键码(keyCode)

  在发生keydown和keyup事件时,event对象的keyCode属性会包含一个代码,keyCode属性的值就是小写字母或数字对应的ASCII码(),在程序中可通过如下代码来获得keyCode值:

var input = document.getElementById("email-input"); input.onkeyup = function(event){        event = event||window.event;        var key = event.keyCode;        if(key == 38){//方向键上            //代码内容            event.preventDefault();//将默认的行为去除        }        else if(key == 40){//方向键下          //代码内容            event.preventDefault();//将默认的行为去除        }        else if(key == 13){//回车            //代码内容        }       //代码内容    }

如果要让字符不输入到输入框中,应该在onkeydown或者onkeypress阶段进行处理,onkeyup时文本已经输入到输入框中了

oninput可以对复制粘贴来的文字进行响应,另外3个不行

循环绑定事件

一开始这么写发现每个元素点击运行时,显示的 i值 都是 length;

因为js的函数是调用时触发,绑定事件的时候i值并没有被传入执行函数里。
作为异步监听的事件,点击事件发生的时候,循环已经结束,此时的 i值 为length, 触发事件传递的参数自然是同一个最大值,而不是预期不同元素传不同值。

var ullist = document.getElementById("email-sug-wrapper");var lielem = ullist.getElementsByTagName("li");for(var i=0;i

应该按照如下方法进行绑定

var ullist = document.getElementById("email-sug-wrapper");var lielem = ullist.getElementsByTagName("li");for(var i=0;i

以上代码利用了闭包,匿名闭包函数声明后立即执行,传递了i值,于是在它的函数域里保存了i值(arguments参数列表里);

函数的返回结果是事件处理函数,其参数ii就是colsure里保存的ii值,也就是循环时就传递的i值。

另外:

event.preventDefault();可以用来阻止默认事件的发生

转载于:https://www.cnblogs.com/txland/p/9464986.html

你可能感兴趣的文章
ubuntu用户及用户组文件信息
查看>>
你学过的东西总会在某个时候用到
查看>>
关于Python开发小程序的随笔path4
查看>>
jQuery插件:跨浏览器复制jQuery-zclip
查看>>
POJ 3468 A Simple Problem with Integers(线段树 成段增减+区间求和)
查看>>
一个简单的 Jwt Demo
查看>>
循序渐进开发WinForm项目(4)--Winform界面模块的集成使用
查看>>
DevExpress的XtraReport和微软RDLC报表的使用和对比
查看>>
代码生成工具更新--快速生成Winform框架的界面项目
查看>>
C++编程思想重点笔记(上)
查看>>
网络连接
查看>>
rest 参数和扩展运算符
查看>>
Struts中Action结果集路径解释
查看>>
SSM-WebMVC(三)
查看>>
java.lang.NoClassDefFoundError: org/apache/http/ssl/SSLContexts
查看>>
简单上传图片代码
查看>>
html 表单动态添加输入项,并以数组的形式发送
查看>>
consul-服务发现、服务隔离、服务配置
查看>>
u-boot中网口处理--硬件部分
查看>>
pickle序列化与反序列化 + eval说明
查看>>