请老师检查一下,是否还有最优解法。

来源: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回答

好帮手慕糖

2019-08-12

同学你好,1、Backspace是会触发事件的哦,或者可以获取下这个键的key值,然后判断,若是等于这个的时候,不就结束,不往下执行。例:

http://img.mukewang.com/climg/5d50c2ce0001845305160264.jpg

不过这样,不触发下面的内容。但是还是可以删除的,但删除的时候,文字显示字数确没有改变,因为你在删除的时候,字数是有变小的,所以建议:还是可以触发事件中的内容。

2、onkeydown为键盘按下事件,当输入第一个字时,按下鼠标,但是这时文本框中还没有文字,所以数字不更新,当第二次按下的时候,进行计算,这时文本框中正好,有第一次输入的数字。

可以多次测试下,使用onkeydown的时候。输入的字数与显示的数字是对不上的哦。

建议:使用鼠标抬起事件onkeyup。例:

http://img.mukewang.com/climg/5d50c38000012ee904510088.jpg

3、其实这个题中,超出之后,也是可以输入的,不过超出之后,提示文字要改变,可以参考下如下哦,例:

http://img.mukewang.com/climg/5d50c3ef000114c911990613.jpg

希望能帮助到你,祝学习愉快!

0
heixin_慕移动6442865
h 发现确实用keydown会多一个字,谢谢老师指出错误,用了keyup就正确了。 关于Backspace问题,根据老师的答案再去试一下。
h019-08-12
共1条回复

weixin_慕移动6442865

提问者

2019-08-12

event.keyCode==8这个是多打的,不用看.................

0

0 学习 · 40143 问题

查看课程