<input type='text' id='txtUser' />
如果此input控件中输入了诸如[~!@#$%]之类的特殊字符,那么光标就会一直置于此文本框中,不允许光标离开,除非输入了合法的字符,这样如何实现?

解决方案 »

  1.   

    if(/[~!@#$%]/.test(str))
      {
       document.getElementByid('txtUser' ) .onblur=false;
     }
      else 
       {
       //alert(str);
       window.status='right.'
          }
      

  2.   

    你这样控制容易形成死循环的,可以这样:
    <script language="JavaScript">
    <!--
    function chkInp(){
    var regCh = null;
    var regAll = null;
    switch(event.srcElement.jinzhi){
    case "bin": regCh = /[0-1]/; regAll = /^[0-1]*$/; break;
    case "oct": regCh = /[0-7]/; regAll = /^[0-7]*$/; break;
    case "hex": regCh = /[0-9a-fA-F]/; regAll = /^[0-9a-fA-F]*$/; break;
    default: regCh = /[0-9]/; regAll = /^[0-9]*$/; break;
    }
    switch(event.type){
    case "keypress": event.returnValue = regCh.test(String.fromCharCode(event.keyCode)); break;
    case "paste" : event.returnValue = regAll.test(window.clipboardData.getData("text")); break;
    case "drop" : event.returnValue = regAll.test(event.dataTransfer.getData("text")); break;
    case "blur" : if(regAll.test(event.srcElement.vlaue)) alert("输入非法"); return;
    default: break;
    }
    }
    //-->
    </script>
    <input type="text" jinzhi="" onkeypress="chkInp()" onpaste="chkInp()" ondrop="chkInp()" onblur="chkInp()"><br>
    0123456789<br>
    abcdefghijklmnopqrstuvwxyz<br>
    ABCDEFGHIJKLMNOPQRSTUVWXYZ<BR>
     ~!@#$%^&*()_+}{":?><|,./\';[]=-<br>这是个例子,可以根据你的需要改一下.
      

  3.   

    <body onload="document.all.t1.focus();">
    <input type="text" id="t1" onkeyup="txt1=this.value.replace(txt,'');if('[~!@#$%]'.indexOf(txt1)>0){this.value= txt;this.focus();}" onkeydown = "txt = this.value">
    </body>
      

  4.   

    一楼的办法有错误.input标记根本没有onblur属性,这是个事件
      

  5.   

    if(/[~!@#$%]/.test(str))
      document.getElementById('txtUser').focus();
    else 
       window.status='right.'