實(shí)時(shí)監(jiān)測(cè)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+"個(gè)字符"; 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="不能小于五個(gè)字符!"; i_a.className="warn?iconerror"; } else?if(this.value.length?>?25){ i_a.innerText="不能大于25個(gè)字符!"; 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>
但是總感覺(jué)哪里不對(duì),大佬們幫我改進(jìn)一下吧
2017-01-17
如果你首先輸入一個(gè)非法字符比如等于號(hào)?然后不停按shift你就能看見提示信息不停地在切換,這是因?yàn)檎齽t表達(dá)式的lastIndex屬性導(dǎo)致的,你可以試試在18行后邊加個(gè)console.log(reg.lastIndex);試試,