为啥我实现不了效果
<!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 星