实时显示字数的textarea文本框

来源:互联网 发布:软件分析师考试 编辑:程序博客网 时间:2024/05/16 06:42

<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="./jquery-2.1.1.min.js"></script>
.one{
width:230px;height:160px;position:relative;}
.two{
bottom:3px;right:0px;position:absolute;
}
#textArea{
width:100%;
height:100%;
}
</head>
<body>
<!-- 在处理textarea之前,首先需知道textarea是不会显示value值的,
如果想显示需要使用js中的方法 $('#textArea').val('123'); -->
<div class="one">
<textarea id="textArea" cols="30" rows="10">测试</textarea>
<span class='two'><span id="textNum">0</span>/100</span>
<!-- 最多100字符,0处显示的是已经写了多少字符 -->
</div>
<script>
$('#textArea').on("keyup",function(){
$('#textNum').text($('#textArea').val().length);//这句是在键盘按下时,实时的显示字数
if($('#textArea').val().length > 100){
$('#textNum').text(100);//长度大于100时0处显示的也只是100
$('#textArea').val($('#textArea').val().substring(0,100));//长度大于100时截取钱100个字符
}
})
$('#textNum').text($('#textArea').val().length);//这句是在刷新的时候仍然显示字数
</script>
</body>

</html>

如果要使用移动端设备(不产生缩放)需在head中加入:<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />

注意:

以上不管是使用onkeydown/onkeypress/onkeyup哪种其实都是不完美的,最显而易见的缺陷就是在处理复制、粘贴的内容时是无效的,还有在移动端也有可能会有问题

这时可以使用onpropertychange,它可以实现实时监听的效果,但是这个事件是IE专属的,这时最好判断是否为IE浏览器,是就是用onpropertychange,不是就使用另一个oninput,最好不要使用onchange,因为onchange是在失焦的时候才出发,不能实时监控,onkeydown在键盘按下时触发,也会发生错乱(比如你写  智慧  两个汉字 它有可能显示的是拼音的长度6),如果是简单的使用最好是onkeyup,更完美的就是onpropertychange结合oninput

0 0
原创粉丝点击