为啥我实现不了效果
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>输入文本</title>
</head>
<body>
<p>字数限制在30字内,<span id="ky">您还可以输入<b id="sz">30</b> 字</span></p>
<textarea cols="50" rows="7" id="text"></textarea>
<script type="text/javascript">
//补充代码
var textjs=document.getElementById("text");
var zs=document.getElementById("ky");
var sy=document.getElementById("sz");
var len=textjs.value.length;
var total=30,over;
textjs.onkeypress=function(){
if(len<=30){
var allow=total-len;
sy.innerHTML=allow;
}else{
over=len=total;
zs.innerHTML="您已经超出"+over+"字";
}
}
</script>
</body>
</html>0
收起
正在回答 回答被采纳积分+1
3回答
好帮手慕码
2019-10-17 20:55:11
同学你好!
首先,onkeypress和onkeydown两个都是在按下键盘的时候触发,

当输入第一个字时,按下键盘,但是这时文本框中还没有文字,所以数字不更新,当第二次按下的时候,进行计算,这时文本框中正好,有第一次输入的数字,例如这种情况:

而onkeyup是键盘抬起时候触发,所以这里使用onkeyup,避免以上情况;
三个的区别:onkeyup是键盘抬起时候触发,这个是最好辨别的。其他onkeypress和onkeydown,建议同学跟着老师下面的例子实际的测试一下,通过效果来总结它们的区别更能帮助你去理解:

执行顺序的区别:当输入一个1的时候,先触发onkeydown ,然后触发onkeypress 。

onkeypress只会响应字母与数字符号。例如你按Tab, Ctrl,Alt键等这些非数字字母的时候,会发现,onkeypress事件并没有触发,但是onkeydown就会触发。(可以多按几个特殊的键试试哦~~)

另外,输入法是中文状态下,也是不会触发onkeypress事件的。(因为老师截图也需要按键,所以触发的次数有点多)

如果帮助到了你,欢迎采纳,祝学习愉快~





恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星