请老师检查一下,是否还有最优解法。
来源:4-5 编程练习
weixin_慕移动6442865
2019-08-12 08:56:16
var a=document.getElementById('box')
var b=document.getElementById('text')
var z=document.getElementById('num')
var span=document.getElementById('span')
var d=30;
a.onkeydown=function(event){
var c=b.value.length
var len=d-c;
z.innerHTML=len
if(len<0){
span.innerHTML='共可以输入30个字符,已超出:'
z.innerHTML=Math.abs(len)+'字符'
}else{
span.innerHTML='共可以输入30个字符,您还是可以输入:'
}
}
另外想问一下老师-------↓↓-------↓↓-------↓↓-------↓↓-------↓↓
下面的代码如何能使Backspace不触发键盘事件?按照目前所学是否可以做到,自己想了很久实在没办法。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
#num{
color: red;
font-weight: bolder;
font-style:italic;
}
</style>
</head>
<body>
<p>您还是可以输入: <span ><em id='num'>30</em>/30</span> </p>
<div id="box">
<textarea name="" id="text" cols="40" rows="5"></textarea>
</div>
<button id='btn' onclick="myBtn(this)">编辑</button>
</body>
<script>
var a=document.getElementById('box')
var b=document.getElementById('text')
var z=document.getElementById('num')
var btn=document.getElementById('btn')
var d=30;
a.onkeydown=function(event){
var c=b.value.length
var len=d-c;
z.innerHTML=len
if(len<1){
alert('不能再输入了')
b.setAttribute('disabled','disabled')
event.keyCode==8
}
}
btn.onclick=function(kick){
if(b.disabled==true){
b.removeAttribute('disabled')
}
}
</script>
</html>
2回答
同学你好,1、Backspace是会触发事件的哦,或者可以获取下这个键的key值,然后判断,若是等于这个的时候,不就结束,不往下执行。例:
不过这样,不触发下面的内容。但是还是可以删除的,但删除的时候,文字显示字数确没有改变,因为你在删除的时候,字数是有变小的,所以建议:还是可以触发事件中的内容。
2、onkeydown为键盘按下事件,当输入第一个字时,按下鼠标,但是这时文本框中还没有文字,所以数字不更新,当第二次按下的时候,进行计算,这时文本框中正好,有第一次输入的数字。
可以多次测试下,使用onkeydown的时候。输入的字数与显示的数字是对不上的哦。
建议:使用鼠标抬起事件onkeyup。例:
3、其实这个题中,超出之后,也是可以输入的,不过超出之后,提示文字要改变,可以参考下如下哦,例:
希望能帮助到你,祝学习愉快!
weixin_慕移动6442865
提问者
2019-08-12
event.keyCode==8这个是多打的,不用看.................
相似问题