Js中的过滤输入

当我们需要输入的文本中不包含某些字符,例如,电话号码中不能包含非数值的字符,而响应文本框中的插入字符操作是keypress事件,可以通过阻止这个事件的默认行为来屏蔽此类字符。但是这样会使得所有的按键都会被屏蔽,结果会导致文本框编程可读的。
因此,我们可以通过检测keypress事件对应的字符编码,然后在决定如何响应。
下面我以输入手机号码为例,分析如何屏蔽非数值字符:虽然理论上,只有在用户按下字符键才会触发keypress事件,但有些浏览器也会对其他触发此事件。FireFoxSafari(3.1版本以前)会对上下键、退格和删除键触发keypress事件。

  1. 在FireFox中,所有由非字符触发的keypress事件对应的字符编码为0,而在Safari 3以前的版本中,对应的字符编码全部为9,因此我们只需通过屏蔽那些字符编码小于10的键即可。
  2. 我们需要屏蔽起亚使用Ctrl的组合键,因此,我们还需要添加一个检测条件,以确保用户没有按下Ctrl键;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过滤输入</title>
</head>
<body>
<div>
  请输入您的手机号:<input type="text" size="14" id="txt1"/>
</div>

<script>
  var oTxt=document.getElementById("txt1");
  oTxt.onkeypress=function()
  {
   var ev=ev||window.event;
   var charCode=ev.charCode;
   if (!/\d/.test(String.fromCharCode(charCode))&&charCode>9&&!event.ctrlKey)
   {
    return false;
   }
  }
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值