BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #27576同步于 2014/9/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

[问题]关于js的一个小疑惑

lw110110
2014/9/18镜像同步5 回复
<html> <body> <script type="text/javascript"> function noNumbers(e) { var keynum var keychar var numcheck if(window.event) // IE { keynum = e.keyCode } else if(e.which) // Netscape/Firefox/Opera { keynum = e.which } keychar = String.fromCharCode(keynum) numcheck = /\d/ return !numcheck.test(keychar) } </script> <form> Type some text (numbers not allowed): <input type="text" onkeydown="return noNumbers(event)" /> </form> </html> 在这段代码中 为什么onkeydown事件需要一个返回值,其他的事件都不需要有return返回值呀。 我的理解是当发生个特定事件的时候,调用特定事件所指定的函数,这个应该没错,但是这个代码里面,并没有那个地方用来表示不能输入数字,这肯定和这个return有莫大的关系,有人能和我说说这里面的工作流程吗??谢谢
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
liu907030机器人#1 · 2014/9/18
!numcheck.test(keychar) 是用正则表达式来检测输入值的,如果是数字,!numcheck.test(keychar)就会等于false 如果在输入框中用键盘按下了一个数字按键,onNumbers函数就会返回一个false的布尔值,然后onkeydown执行的函数语句就是return false,意思就是取消本次按键事件 你可以把代码改成 <input type="text" onkeydown="return false" /> 再试试,会发现你在输入框里什么字符都无法输入
lw110110机器人#2 · 2014/9/18
其他的事件如果也是return false 比方说,onload事件,我给他return false,那么它会回滚到加载前吗,还是根本就没有这个用法,return false|true 我只在onkeydown 和onkeypress里面看见有。。 【 在 liu907030 的大作中提到: 】 : !numcheck.test(keychar) 是用正则表达式来检测输入值的,如果是数字,!numcheck.test(keychar)就会等于false : 如果在输入框中用键盘按下了一个数字按键,onNumbers函数就会返回一个false的布尔值,然后onkeydown执行的函数语句就是return false,意思就是取消本次按键事件 : 你可以把代码改成 <input type="text" onkeydown="return false" /> 再试试,会发现你在输入框里什么字符都无法输入
liu907030机器人#3 · 2014/9/19
【 在 lw110110 的大作中提到: 】 : 其他的事件如果也是return false 比方说,onload事件,我给他return false,那么它会回滚到加载前吗,还是根本就没有这个用法,return false|true 我只在onkeydown 和onkeypress里面看见有。。 return false的用法肯定是有的,但不是任何事件都能用return false取消的 onload也不是任何元素都能绑定这个事件,只有<body>, <frame>, <frameset>, <iframe>, <img>, <link>, <script>元素,image, layer, window对象可以绑定 而且return false实现机制也不是通过回滚来取消事件,onkeydown之所以能取消是因为它发生在键盘按下之后,文字显示之前,所以return false能阻止数字的输入,因为它取消了文字显示这一后续事件 onload之类的事件是在元素或者对象加载完成以后触发的,所以就算你return false,也不会有什么效果
weiyitheonly机器人#4 · 2014/9/19
onclick也有return false; 比如有时要阻止一个a,让它的onclick return false,那么这个a点了就没效果了。
lw110110机器人#5 · 2014/9/19
原来如此~~ 【 在 liu907030 的大作中提到: 】 : : return false的用法肯定是有的,但不是任何事件都能用return false取消的 : onload也不是任何元素都能绑定这个事件,只有<body>, <frame>, <frameset>, <iframe>, <img>, <link>, <script>元素,image, layer, window对象可以绑定 : ...................