JavaScript限制文本框输入字符数,区分中英文

原帖地址:http://bbs.csdn.net/topics/280025790

七楼

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
  <title>试试</title>

<script type="text/javascript">
function check(event, len) {
  var e = window.event || event;
  if(e.ctrlKey || e.altKey || e.shiftKey || isFunKey(e.keyCode)) {
    return true;
  }
  var obj = e.srcElement || e.target;
  if(getLength(obj.value) >= len) {
    return false;
  }
  return true;
}

function change(obj, len) {
  var txt = obj.value;
  if(getLength(txt) <= len) {
    return;
  }
  while(getLength(txt) > len) {
    txt = txt.substring(0, txt.length - 1);
  }
  obj.value = txt;
}

function getLength(str) {
  var len = 0;
  for(var i = 0; i < str.length; i++) {
    if(str.charCodeAt(i) < 0x80) {
      len++;
    }else{
      len += 2;
    }
  }
  return len;
}

function isFunKey(code) {
  //  8 --> Backspace
  // 35 --> End
  // 36 --> Home
  // 37 --> Left Arrow
  // 39 --> Right Arrow
  // 46 --> Delete
  // 112~123 --> F1~F12
  var funKeys = [8, 35, 36, 37, 39, 46];
  for(var i = 112; i <= 123; i++) {
    funKeys.push(i);
  }
  for(var i = 0; i < funKeys.length; i++) {
    if(funKeys[i] == code) {
      return true;
    }
  }
  return false;
}
</script>
</head>
<body>
  <form name="frm" method="post" action="#">
    <input type="text" name="txt" id="txt" οnkeydοwn="return check(event, 10)" onpropertychange="change(this, 10)" οninput="change(this, 10)"><br/>
    <input type="submit" value="提交">
  </form>
</body>
</html>

如果想限制只能输入十个汉字,那么change方法的参数应该传20,所以我在change代码中添加len=len*2;这样感觉更方便点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值