Html怎样用js限制某input输入框仅允许输入英文或数字呢?(使用onkeydown事件)

Html怎样用js限制某input输入框仅允许输入英文或数字呢?(使用onkeydown事件)

阅读 8.2k
3 个回答

简单点写就是这样

$('input').on('keyup', function(){
    this.value = this.value.replace(/[\W|\_]/g,function(){
        //alert('请输入字母或数字')
        return ''
    })
})

这里非法字符先出现,后被替换为'',会有闪烁的现象,如果想要做的更好点,那就推荐用个div和input叠在一起,让input过滤后的value innerHTML到div中

  1. 你得用 keyup 事件,只有 keyup 事件你才能获取到当前输入的字符

  2. keyup 事件处理器中过滤非英文和数字的字符,用正则过滤 [A-Za-z0-9]

不认同@elliott的答案1,keydown, keypress, keyup三个键盘事件最大的不同在于触发顺序。至于它们一些别的键码上的细微区别,一搜一大把。并不是只有keyup才能获取当前输入,而且,也是不能直接获取字符的。

回归到题主的问题,思路其实就是基本的正则过滤,楼上的答案2已经给出。拿到键码,匹配正则。当然粗暴点,你也可以列个keyCode的hash,进行匹配判断。

话说,为什么不用keypress。最起码天然过滤功能键不好么。顺带一提,别忘了PreventDefault哦

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题