利用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键
    if (keyCode == 8) return true
    return false
}

 

效果:

// = 48 && keyCode <= 57 ) return true // 小数字键盘 if (keyCode >= 96 && keyCode <= 105) return true // Backspace键 if (keyCode == 8) return true return false } // ]]>

 

相关:

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

 

 

更多相关文章
一周排行
  •   我们在上一篇讨论中介绍了一些基本的由scalaz提供的typeclass.这些基本typeclass主要的作用是通过操作符来保证类型安全,也就是在前期编译时就由compiler来发现错误.在这篇讨论中我希望能按照
  • 


    		    javaweb導入專案名修改
    在 .project,.mymetadata文件里修改
  • alwaysOn爲什麽不支持分布式事務
    Alwayson是微软从SQL2012开始引入的一种高可用和高性能架构,它既可以实现故障转 ...
  • 


    		    Windows Phone 7 如何判斷ListBox控件滾動到底
    假如ListBox控件綁定的数据很大的时候,通常会造成加载的速度很慢,那么有一种交互方案可 ...
  • 12.4 可选工作流(alternative workflows) 计算表达式(Computation expressions)是一种 F# 功能,部分灵感是来自 Haskell 的单子(monads).单子有个不好
  • 这两天正在试验Struts2与Spring框架的整合,和他们各自的“注解”.今天就总结一下这两个框架怎么用注解进行整合.   一,加入两者的依赖包,除了两者的必要依赖外,还需要导入struts2-spring-plu ...
  • 


    		    Windows Server入門系列之八 設置BIOS引導順序
    无论是用工具光盘还是启动优盘修复电脑,首先都需要在BIOS中设置引导顺序,将系统设置为优先
  • GitHub在Visual Studio 2015中獲得TFS/VSO同等地位
    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边 ...
  • 这两天一直在弄自动生成静态页面的技术,今天算是弄出来了,但是建立文件的时间出错,因为当第一次添加文件时,系统会建立一个以今天的日期命名的文件夹,然后在此文件夹下建立当天生成的静态页面,这样如果添加第二条记录的时间还会
  • KL01 会计-管理会计-成本中心-主文件数据-作业类型-单个处理过程-创建KL02 会计-管理会计-成本中心-主文件数据-作业类型-单个处理过程-修改KL03 会计-管理会计-成本中心-主文件数据-作业类型-单个处