js键盘事件

键盘事件是指当用户在操作键盘的时候会自动被触发的事件, 通 常有以下三种:

( 1) onkeydown: 用户按下任意键都可以触发这个事件。如果按住不 放, 事件会被连续触发。

(2) onkeypress: 用户按下任意键都可以触发这个事件 ( 功能键除外 ) 。 如果按住不放, 事件会被连续触发

(3) onkeyup: 用户释放按键时触发 ps : 键盘事件一般绑定在需要用户输入的元素上(例如 i nput) , 但是由于键盘事件默认采用事件冒泡机制, 因此将键盘事件直接 绑定在 body 之上也是允许的

键盘属性 key 和 keyCode

属性 Key: 具体是哪一个键

keyCode: 返回 keydown 何 keyup 事件发生的时候按键的代码, 以及 keypress 事件的 Unicode 字符 (ascii 码值 ) 。

案例1:

京东按下 s 键定位到搜索框:

检测用户是否按下了 s 键盘,如果按下 s 键,就把光标定位到搜索框里面。

案例分析

  • 利用键盘事件对象里面的 keyCode 判断用户是否按下的是 s 键
  • 搜索框获得焦点的方法: 利用 js 里面的 focus() 方法
<!DOCTYPE html>
<html lang="en">
<head>
    <title>京东搜索框</title>
</head>
<body>
    <input type="text" name="" id="">
    <script>
        var input = document.querySelector('input');
        document.addEventListener('keyup', function (e) {
            if (e.keyCode == 83) {
                input.focus();
            }
        });
    </script>
</body>
</html>

案例2:

快递单号查询:

查询快递单号的时候,上面一个更大的盒子显示同样的内容(这里的字号更大)。

案例分析

  • 表单检测用户输入:给表单添加键盘事件
  • 同时把快递单号里面的值(value)获取过来赋值给 con 盒子(innerText)作为内容
  • 当失去焦点的时候,就隐藏这个 con 盒子。
  • 当获得焦点的时候,如果快递单号里面不为空,就显示 con 盒子。
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Document</title>
    <style>
    .search {
        position: relative;
        width: 178px;
        margin: 100px;
    }
    .con {
        display: none;;
        position: absolute;
        top: -40px;
        width: 171px;
        border: 1px solid rgba(0, 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" placeholder="请输入您的快递单号">
    </div>
    <script>
    var input = document.querySelector('input');
    var con = document.querySelector('.con');
    input.addEventListener('keyup', function(e) {
        if (this.value == '') {
            con.style.display = 'none';
        } else {
            con.style.display = 'block';
            con.innerText = this.value;
        }
    });
    // 当失去焦点的时候,就隐藏这个 con 盒子。
    input.addEventListener('blur', function() {
        con.style.display = 'none';
    });
    // 当获得焦点的时候,如果内容不为空,就显示这个 con 盒子。
    input.addEventListener('focus', function() {
        if (this.value !== '') {
            con.style.display = 'block';
        }
    });
    </script>
</body>
</html>

注意:

keydown 和 keypress 触发的时候,文字还没有落入文本框中。

keyup 触发的时候,文字已经输入到文本框中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值