html+css+Jquery 实现 文本域 文字数量限制、根据输入字数自适应高度

本文介绍了如何使用HTML、CSS和JavaScript实现一个文本域,当用户输入文字时自动调整高度并限制字符数量,同时提供了样式的自定义和线上jQuery库的引用示例。
摘要由CSDN通过智能技术生成

先看效果:初始的效果,样式多少有点问题,不重要!重要的是功能!

在这里插入图片描述

输入后: 根据文字长度,决定文本域长度 + 限制文字数量

在这里插入图片描述

话不多说,直接上代码!

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>
<style type="text/css">
.foot-send-img img {
	width: 20px;
	height: 20px;
}
.text-input_5ZOdm{
  display: flex;
  justify-content: center;
  align-items: end;
  position: relative;
  box-sizing: border-box;
  font-family: Arial,Helvetica,sans-serif;
  width: 649px;
  height: 40px;
  background: #FFFFFF;
  box-shadow: 0px 0px 6px 1px #ee1903;
  border-radius: 10px;
}
.text-container{
  width: 100%;
  height:100%;
}
.text-input-textarea_chat{
  background: #FFFFFF;
  line-height: 28px;
  border-radius: 10px;
  resize: none;
  outline-color: #ffff;
  width: 100%;
  height: 100%;
  border: none;
  outline: none;
  word-break: break-word;
  font-size: 16px;
  overflow: hidden;
  padding-left: 14px;
  padding-top: 7px;
}
.chat-number{
  float: right;
  position: relative;
  font-size: 12px;
  font-family: PingFangSC, PingFang SC;
  font-weight: 400;
  color: #D1D1D1;
  bottom: 22px;
  margin-right: 10px;
}
.foot-send-img{
  width: 55px;
  background: #FFA245;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  height: 34px;
  bottom: 3px;
  position: relative;
}
.sidebar_right-left{
	    display: flex;
    align-items: center;
    padding-left: 76px;
}
</style>
<body>
<div class="sidebar_right-left">
	<div class="text-input_5ZOdm  text-enable_3rWFc"> 
  <div class="text-container">
    <textarea class="text-input-textarea_chat chat-input-size" id="chat-input-size" placeholder="请问我 您想了解的问题" maxlength="50"></textarea>
      <p class="chat-number"><span id="textNum">0</span>/<span>50</span></p>
  </div>

  <div class="foot-send-img" id="send-btn">
    <img src="./images/img1.jpg" align="middle"  class="chat-foot-send">
  </div>
</div>
</div>
</body>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
	
$("#chat-input-size").on('focus input',function(){
  var textarea = $('#chat-input-size');
  computerTextareaRows(textarea);
  var text = textarea.val();

  var counter = text.length;
  if (text.indexOf("请问我您想了解的问题") > -1){
    textarea.val('')
  }
  $("#textNum").text(counter);
  if(counter >= 50){
    $('.chat-number').css('color','#FF7F7F');
    return false;
  }else{
    $('.chat-number').css('color','#D1D1D1');
  }
}).on('blur',function(){
  var textarea = $('#chat-input-size');
  var text = textarea.val();
  if (text === ''){
    textarea.val('请问我您想了解的问题')
  }
})

//根据texarea行数设置高度
function computerTextareaRows(textarea) {
  var lineHeight = parseFloat(textarea.css('line-height'));
  var paddingTop = parseFloat(textarea.css('padding-top'));
  var paddingBottom = parseFloat(textarea.css('padding-bottom'));

// 计算行数
  var contentHeight = textarea[0].scrollHeight - paddingTop - paddingBottom;
  let proportion = contentHeight / lineHeight;
  var rows = proportion < 2 ? 1 : Math.ceil(contentHeight / lineHeight);
  // console.log(rows,textarea[0].scrollHeight,proportion)
  if (rows>1){
    $('#chat-input-size').css('height','40px');
    $('.text-input_5ZOdm').css('height', 'auto');
    $('.text-input_5ZOdm').css('height', textarea[0].scrollHeight+'px');
    $('#chat-input-size').css('height',textarea[0].scrollHeight+'px');
    // $('#send-btn').css('margin-top','20px');
  } else {
    $('.text-input_5ZOdm').css('height','40px');
    // $('#send-btn').css('margin-top','0px');
  }
  return rows;
}
</script>
</html>

ps:

1 .样式请自行调整!

2 .此处代码为了方便测试,使用的是线上的jquery地址,使用时,请更换自己的路径地址!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

付煜晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值