请问哪里出错?怎么改?

ekway 2003-08-21 08:04:34
<!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.form.username.focus();
return false
else
return true
}
}
</script>
<form name="form">
<input name="username" type="text" onKeyDown="return check()">
</form>
</BODY>
</HTML>
...全文
55 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ekway 2003-08-21
  • 打赏
  • 举报
回复
楼上的方法是改进了,但在切换中文输入法,并试图打字时就已经提示输入非法字符。
我想这样的:33-47的keyCode是数字键上的符号;58-64;91-96以及123-127是冒号、双引号(大Enter和右Shift键旁的符号)。我只想去掉这些,并在onkeydown或up是显示错误。请问如何解决?
ekway 2003-08-21
  • 打赏
  • 举报
回复
还是没有alert啊!
bencalie 2003-08-21
  • 打赏
  • 举报
回复
太乱了,用正则表达式来做吧,改了,我用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>
shyslysky 2003-08-21
  • 打赏
  • 举报
回复
错误有二:
一、 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

}
ekway 2003-08-21
  • 打赏
  • 举报
回复
楼上的,为什么改成你的代码后,在onKeyDown后没有出现提示错误呢?
bencalie 2003-08-21
  • 打赏
  • 举报
回复
<!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>
ekway 2003-08-21
  • 打赏
  • 举报
回复
不是,限制只可填英文字母、汉字(即可以使用ctrl、shift、退格键),屏蔽掉非法字符。
chinahuman 2003-08-21
  • 打赏
  • 举报
回复
是不是要求用户名只能用英文字母?
<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;
}

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧