是不是要求用户名只能用英文字母?
<input name="username" type="text" value=""  onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[\u4E00-\u9FA5]/g,''))" style="ime-mode: disabled ">
在提交的时候再来一个判断:
var r1=/\W/ig;
var chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
var names=document.form1.username.value;
var firstname=names.substr(0,1);
if(document.form1.username.value=="")
{
document.form1.username.focus();
alert("请填写登陆帐号");
return false;
}
//看是否以字母开头的
if( chars.indexOf(firstname)<0 )
{document.form1.username.focus();
alert("登陆帐号应以字母开头");
return false;
}
//看是不是有非法字符 if(names.match(r1)!=null)
{document.form1.username.focus();
alert("登陆帐号里有非法字符");
return false;
}

解决方案 »

  1.   

    不是,限制只可填英文字母、汉字(即可以使用ctrl、shift、退格键),屏蔽掉非法字符。
      

  2.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    </HEAD><BODY>
    <script language="javascript">
    function check()
    {
     if(event.keyCode>=33&&event.keyCode<=47||event.keyCode>=58&&event.keyCode<=64||event.keyCode>=91&&event.keyCode<=96||event.keyCode>=123&&event.keyCode<=127){
      alert("您输入非法字符!请重新输入。");
      document.form1.username.focus();   
      return false
    }
    else
        return true
    }
    </script>
    <form name="form1">
    <input name="username" type="text" onKeyDown="return check()">
    </form>
    </BODY>
    </HTML>
      

  3.   

    楼上的,为什么改成你的代码后,在onKeyDown后没有出现提示错误呢?
      

  4.   

    错误有二:
    一、 KeyCode应该是keyCode;
    二、倒数第二个花括号用错地方。正确的代码如下:
    <script language="javascript">
    function check()
    {
     if(event.keyCode>=33&&event.keyCode<=47||event.keyCode>=58&&event.keyCode<=64||event.keyCode>=91&&event.keyCode<=96||event.keyCode>=123&&event.keyCode<=127) 
     {
      alert("您输入非法字符!请重新输入。");
      document.form.username.focus();   
      return false
    }  
    else
        return true}
      

  5.   

    太乱了,用正则表达式来做吧,改了,我用onkeyup
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    </HEAD><BODY>
    <script language="javascript">
    function check()
    {
      if(/[^A-Za-z\u4e00-\u9fa5]/g.test(event.srcElement.value)){
      alert("您输入非法字符!请重新输入。");
      document.form1.username.focus();   
      return false
    }
    else
        return true
    }
    </script>
    <form name="form1">
    <input name="username" type="text" onkeyup="return check()">
    </form>
    </BODY>
    </HTML>
      

  6.   

    楼上的方法是改进了,但在切换中文输入法,并试图打字时就已经提示输入非法字符。
    我想这样的:33-47的keyCode是数字键上的符号;58-64;91-96以及123-127是冒号、双引号(大Enter和右Shift键旁的符号)。我只想去掉这些,并在onkeydown或up是显示错误。请问如何解决?