为了账号安全,请及时绑定邮箱和手机立即绑定

实时监测text输入框的值是否合法

<script>
var input_a=document.getElementsByClassName("input-a")[0];
var input_b=document.getElementsByClassName("input-b")[0];
var countdiv=document.getElementsByClassName("count")[0];
var i_a=document.getElementsByTagName("i")[0];
var reg=/[^\w\u4e00-\u9fa5]/g;
var value=null;
var selfvalue=null;
input_a.onfocus=function(){
	i_a.style.display="block";
	
	input_a.onkeyup=function(){
	var count=countNum(this.value);
	countdiv.innerText=count == 0? null:count+"个字符";
	
	
	if(reg.test(this.value)){
		i_a.innerText="含有非法字符!";
		i_a.className="warn iconerror";
	}
	else if(this.value == ""){
		i_a.innerText="不能为空!";
		i_a.className="warn iconerror";
	}
	else if(this.value.length < 5){
		i_a.innerText="不能小于五个字符!";
		i_a.className="warn iconerror";
	}
	else if(this.value.length > 25){
		i_a.innerText="不能大于25个字符!";
		i_a.className="warn iconerror";
	}
	else if(!reg.test(this.value)){
		i_a.innerText="填写正确哦!";
		i_a.className="warn iconright";
	}

	
}
}





function countNum(str){
		var len=str.length;
		for(var i=0;i<str.length;i++){
				if(str.charCodeAt(i) > 255){
					len++;
				}
		}
		return len;
}
</script>

但是总感觉哪里不对,大佬们帮我改进一下吧

正在回答

1 回答

如果你首先输入一个非法字符比如等于号 然后不停按shift你就能看见提示信息不停地在切换,这是因为正则表达式的lastIndex属性导致的,你可以试试在18行后边加个console.log(reg.lastIndex);试试,

0 回复 有任何疑惑可以回复我~
#1

霍丶 提问者

所以需要 把 正则的 /g 去掉?
2017-01-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
表单验证
  • 参与学习       53334    人
  • 解答问题       253    个

表单验证是JavaScript中的高级选项之一,输入框的验证

进入课程

实时监测text输入框的值是否合法

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信