返回信息流<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有莫大的关系,有人能和我说说这里面的工作流程吗??谢谢
这是一条镜像帖。来源:北邮人论坛 / www-technology / #27576同步于 2014/9/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
[问题]关于js的一个小疑惑
lw110110
2014/9/18镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
!numcheck.test(keychar) 是用正则表达式来检测输入值的,如果是数字,!numcheck.test(keychar)就会等于false
如果在输入框中用键盘按下了一个数字按键,onNumbers函数就会返回一个false的布尔值,然后onkeydown执行的函数语句就是return false,意思就是取消本次按键事件
你可以把代码改成 <input type="text" onkeydown="return false" /> 再试试,会发现你在输入框里什么字符都无法输入
其他的事件如果也是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" /> 再试试,会发现你在输入框里什么字符都无法输入
【 在 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,也不会有什么效果
onclick也有return false;
比如有时要阻止一个a,让它的onclick return false,那么这个a点了就没效果了。
原来如此~~
【 在 liu907030 的大作中提到: 】
:
: return false的用法肯定是有的,但不是任何事件都能用return false取消的
: onload也不是任何元素都能绑定这个事件,只有<body>, <frame>, <frameset>, <iframe>, <img>, <link>, <script>元素,image, layer, window对象可以绑定
: ...................