javascript中onkeypress和onblur事件有什么不同?我这段代码错在哪里?50分奉上!!在线...
<script language="javascript">
function checknick() {
var str_nickname = new string(document.form1.nickname.value);
var k = window.event.keyCode;
if(k<48 || ((k>57) && (k<65)) ||((k>90) && (k<97) && k!=95)|| ((k>122) && (k<=255))) {
alert("你输入了非法字符!");
window.event.keyCode = 0;
}
if(str_nickname.length>8)
{ alert("error!");
return false;
}
}
</script>
<input type="text" name="nickname" size="10" onblur="checknick()" onpaste="return false">
如果用onblur事件,注释掉"var str_nickname=..."和函数中最后一个if语句可以判断输入的字符,但不能判断字符长度! 如果不注释这两句代码,连字符验证也不能实现,长度判断也不能实现.
如果用onkeypress事件,注释掉"var str_nickname=..."和函数中最后一个if语句可以判断输入的字符,但不能判断字符长度! 如果不注释这两句代码,连字符验证也不能实现,长度判断也不能实现.
特向高手请教,为何使用两种事件都不能判断输入字符的长度!两种事件有什么区别?怎样实现判断字符长度的功能?
问题点数:50、回复次数:9Top
1 楼fason(咖啡人生)回复于 2003-03-03 12:59:53 得分 10
如果你用onkeypress当然就只能用keycode,这样对每个字符判断,如果你用onblur就只能对整个value进行判断,区别很大Top
2 楼lgchao()回复于 2003-03-03 13:02:33 得分 5
onKeyPress--按下键
onBlur--失去焦点
跟事件无关,是你的程序问题Top
3 楼net_lover(【孟子E章】)回复于 2003-03-03 13:03:49 得分 15
var str_nickname = new String(nickname.value);
string大写Top
4 楼LoveLonghair(我爱长发飘飘)回复于 2003-03-03 13:04:57 得分 0
就是说,用onkeypress是对每个字符分别判断的,不能判断整个value;用onblur应该可以判断字符长度.是吧?可是为什么我的代码不能实现?错在哪里???:(Top
5 楼fason(咖啡人生)回复于 2003-03-03 13:09:11 得分 0
你楼上说了,还有,你说的不是必然,但对你的程序而言的确是Top
6 楼lgchao()回复于 2003-03-03 13:09:36 得分 5
<script language="javascript">
//只能输入大小写字母,数字和下划线
function checknick(str) {
var re=/[^0-9a-zA-Z]/
if(re.test(str)) {
alert("你输入了非法字符!");
return false;
}
if(str.length>8)
{ alert("error!");
return false;
}
return true;
}
</script>
<input type="text" name="nickname" size="10" onblur="checknick(this.value)" onpaste="return false">Top
7 楼moonpiazza(月光易水)回复于 2003-03-03 13:16:53 得分 15
1. new string() ==> new String()
2. 分别使用onkeypress,onblur事件
3. 限定输入框长度可以使用 maxlength
<script language="javascript">
function checknick_keypress() {
var str_nickname = new String(document.form1.nickname.value);
var k = window.event.keyCode;
if(k<48 || ((k>57) && (k<65)) ||((k>90) && (k<97) && k!=95)|| ((k>122) && (k<=255))) {
alert("你输入了非法字符!");
window.event.keyCode = 0;
return false;
}
}
function checknick_blur() {
var str_nickname = new String(document.form1.nickname.value);
if(str_nickname.length>8)
{ alert("error!");
return false;
}
}
</script>
<FORM METHOD=POST ACTION="" name=form1>
<input type="text" name="nickname" size="10" onblur="checknick_blur()" onkeypress="checknick_keypress()" onpaste="return false">
</FORM>
:_)Top
8 楼LoveLonghair(我爱长发飘飘)回复于 2003-03-03 13:21:33 得分 0
如果不用maxlength,通过脚本如何实现.由于我的用户名可以是汉字,如何限制在8个字节以内.
var mystr="aaa中国123_"
mystr.length=??? //多少?Top
9 楼LoveLonghair(我爱长发飘飘)回复于 2003-03-03 13:57:50 得分 0
to moonpiazza(月下小生):
onblur事件里能用window.event.keyCode吗?我在onblur里用window.event.keyCode好象不行,无论什么字符都认为是非法字符.好象是第一个IF条件恒成立一样.是什么原因??高手解释解释.Top




