zoukankan      html  css  js  c++  java
  • 利用Keydown事件阻止用户输入

    先了解下各事件的区别

    • keydown:在控件有焦点的情况下按下键时发生
    • keypress:在控件有焦点的情况下按下键时发生
    • keyup:   在控件有焦点的情况下释放键时发生

    意义

    1. keypress主要用来接收字母、数字等ANSI字符。keydown 和 keyup 事件过程通常可以捕获键盘除了PrScrn所有按键 (这里不讨论特殊键盘的特殊键)
    2. keypress 只能捕获单个字符,keydown 和 keyup 可以捕获组合键
    3. keypress 不显示键盘的物理状态(SHIFT键),而只是传递一个字符。keypress 将每个字符的大、小写形式作为不同的键代码解释,即作为两种不同的字符。
    4. keydown 和 keyup 不能判断键值字母的大小,用两种参数解释每个字符的大写形式和小写形式:keycode — 显示物理的键(将 A 和 a 作为同一个键返回)和 shift —指示 shift + key 键的状态而且返回 A 或 a 其中之一
    5. keypress 不区分小键盘和主键盘的数字字符,keydown 和 keyup 区分小键盘和主键盘的数字字符
    6. keydown、keyup事件是当按下 ( keydown ) 或松开 ( keyup ) 一个键时发生的。由于一般按下键盘的键往往会立即放开(这和鼠标不同),所以这两个事件使用哪个差别不大。而且,up和其他两者还有一个区别:要判断key修改后的状态必须用up

    我们可以利用keydown事件来阻止用户的输入,比如某输入域只能输入数字

    键盘上数字键的keyCode

    • [48-57]  数字键
    • [96-105] 数字小键盘
    • 此外允许Backspace键删除

    代码如下

    var input = document.getElementById('number_ipt')
    input.onkeydown = function(e) {
        var keyCode = e.keyCode
        if ( !isNumber(keyCode) ) return false            
    }
    
    // 仅能输入数字
    function isNumber(keyCode) {
        // 数字
        if (keyCode >= 48 && keyCode <= 57 ) return true
        // 小数字键盘
        if (keyCode >= 96 && keyCode <= 105) return true
        // Backspace, del, 左右方向键
        if (code == 8 || code == 46 || code == 37 || code == 39) return true
        return false
    }
    

    效果:

    相关:

    https://github.com/snandy/e.js/blob/master/test/stop.html

  • 相关阅读:
    HTML5和CSS3的学习视频
    webpack中bundler源码编写2
    webpack中bundler源码编写
    webpack中如何编写一个plugin
    webpack多页面打包配置
    webpack中配置eslint
    webpack解决单页面路由问题
    webpack中使用WebpackDevServer实现请求转发
    webpack中typeScript的打包配置
    rsync 同步
  • 原文地址:https://www.cnblogs.com/snandy/p/3573829.html
Copyright © 2011-2022 走看看