键盘事件
//键盘操作
//1.某键盘按下执行的操作 document是对文档进行触发
document.onkeyup = function(){
console.log('你好')
}
document.addEventListener('keyup',function(){
console.log('你好')
})
//2.某键盘按下操作,此执行,只要键盘一直按着,就一直重复执行
document.onkeydown = function(){
console.log('按了键盘')
}
document.addEventListener('keydown',function(){
console.log('我按下了键盘')
})
document.addEventListener('keypress',function(){ //keypress 事件是不能识别功能键的,比如:ctrl、左右箭头
console.log('我按了press键')
})
//注意:如果keyup、keydown和keypress,同时出现执行顺序 keydown->keypress->keyup //可以查看到执行过程和属性
document.addEventListener('keyup',function(e){
console.log(e)
})
//keyCode 是对应键盘的Ascll码值
//注意:keyup和keydown 不区分字母大小写,如果想区分可以用可以keypress
案例一:
//京东首页按s键光标自动定位到搜索框
var search = document.querySelector('input');
document.addEventListener('keyup',function(){ //用keyup事件是因为keydown执行并将内容赋值给input.value
if(e.keyCode === 83) { //s的Ascll码是83
search.focus(); //让搜索框得到光标
}
})
案例二:
//京东订单查询功能
<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
} .search {
position: relative;
width: 178px;
margin: 100px;
} .con {
display: none;
position: absolute;
top: -40px;
width: 171px;
border: 1px solid rgba(0, 0, 0, .2);
box-shadow: 0 2px 4px rgba(0, 0, 0, .2);
padding: 5px 0;
font-size: 18px;
line-height: 20px;
color: #333;
} .con::before {
content: '';
width: 0;
height: 0;
position: absolute;
top: 28px;
left: 18px; /*倒三角型的定义*/
border: 8px solid #000;
border-style: solid dashed dashed;
border-color: #fff transparent transparent;
}
</style>
</head>
<body>
<div class="search">
<div class="con">123</div>
<input type="text" class="jd" placeholder="请输入快递单号">
</div>
<script>
思路:
// 快递单号输入内容时, 上面的大号字体盒子(con)显示(这里面的字号更大)
// 表单检测用户输入: 给表单添加键盘事件
// 同时把快递单号里面的值(value)获取过来赋值给 con盒子(innerText)做为内容
// 如果快递单号里面内容为空,则隐藏大号字体盒子(con)盒子
//获取元素
var con = document.querySelector('.con');
var jd_input = document.querySelector('.jd'); jd_input.addEventListener('keyup',function(){
/*注意:事件触发keydown和keypress在文本框里面的特点:
他们两个事件触发的时候,文字还没有落入文本中去*/
if (this.value == ''){
con.style.display = 'none'; } else {
con.style.display = 'block';
con.innerHTML = this.value;
} }) //得到焦点
jd_input.addEventListener('blur',function(){
con.style.display = 'none';
})
//失去焦点
jd_input.addEventListener('foucs',function(){
if(jd_input !== ''){
con.style.display = 'block'
}
})
</script>
</body>
</html>

最新文章

  1. jquery插件——检测DOM元素是否在浏览器可视范围之内
  2. iOS开源项目教程大合集
  3. CocoStudio基础教程(5)使用CocoStudio场景编辑器关联组件
  4. ASP.NET Excel 导入 Oracle 方法2
  5. linux 信号处理
  6. Gitolite 构建 Git 服务器
  7. 2015 UESTC Winter Training #8【The 2011 Rocky Mountain Regional Contest】
  8. codeforces 609E. Minimum spanning tree for each edge 树链剖分
  9. ZooKeeper数据模型
  10. 你可能不知道的.Net Core Configuration
  11. 优易软件-关于click事件在苹果手机失效的问题
  12. odoo Model字段的参数
  13. 004_wireshark专题
  14. ida 调试 android fork
  15. APP网络优化篇
  16. 一、JDBC
  17. 转:NGNIX模块开发——nginx的配置系统
  18. 乱序字符串anagrams
  19. 【leetcode 简单】 第八十八题 猜数字大小
  20. 【NGUI】Unity3D UIGrid 排序、动态加载与销毁

热门文章

  1. CentOS 6.4 下 Python 2.6 升级到 2.7
  2. mybatis错误 Mapped Statements collection does not contain value for
  3. IM即时通讯设计 高并发聊天服务:服务器 + qt客户端(附源码)
  4. Python绘制饼图
  5. HTTP隧道解决的问题
  6. Mybatis中原生DAO实现和Mapper动态代理实现
  7. xmake v2.6.2 发布,新增 Linux 内核驱动模块构建支持
  8. Arcpy按属性(字段值)不同将shp分割为多个独立shp_适用点线面矢量
  9. CF74A Room Leader 题解
  10. 『学了就忘』Linux系统定时任务 — 88、循环执行定时任务