如何优雅地限制textarea的输入字数?

news2024/11/24 23:02:20

大家好,我是瑶山,今天聊聊textarea

textarea

有基础的同学都知道<textarea>是HTML中的一个标签,用于定义多行的文本输入控件。它允许用户在表单中输入多行文本,相较于单行输入框可以输入更多的内容。

但是,如果我们不想用户无限制字数的输入,该怎么做呢?

加个maxlength不就好了

使用maxlength限制

maxlength:这个属性用于限制用户输入的文本长度,超过设定的长度将无法输入

多行文本:<textarea name="title" rows="5" maxlength="20"></textarea>

当maxlength="20"时,输完20个字符后,你会发现不管再输入什么,文本框都不会有任何变化了。

当然,这种静默的方式给你用户的体验可能不是很好,我们希望能给用户提供更明显的反馈

剩余字数提醒

首先,我们要给textarea添加一个“守门员”——事件监听器。这个“守门员”会时刻关注着textarea里的内容变化,一旦发现有“超员”的情况,就用substring方法把内容截断到最大字数。

除了限制字数,我们还可以给用户提供一些额外的提示,比如显示当前已经输入了多少字,还剩下多少字数可以输入。这样,用户就能更清楚地掌握自己的输入进度了。

以下是一个简单的示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>限制 Textarea 字数</title>
</head>
<body>

<textarea id="myTextarea" rows="4" cols="50" maxlength="20"></textarea>
<p id="characterCount">你还可以输入 <span id="remainingChars">20</span> 个字符</p>

<script>
    const textarea = document.getElementById('myTextarea');
    const characterCount = document.getElementById('characterCount');
    const remainingChars = document.getElementById('remainingChars');
    const maxCharacters = 20; // 设置最大字数

    textarea.addEventListener('input', function() {
        const currentCharacters = this.value.length;
        const remaining = maxCharacters - currentCharacters;

        // 更新剩余字符数
        remainingChars.textContent = remaining > 0 ? remaining : 0;

        // 如果超过最大字数,则截断内容
        if (currentCharacters > maxCharacters) {
            this.value = this.value.substring(0, maxCharacters);
        }
    });
</script>

</body>
</html>

效果如下

限制textarea的输入字数并不是一件难事,只要我们用对方法,就能既保证用户体验,又避免数据冗余。下次当你需要限制textarea的输入字数时,不妨试试这个方法吧! 

ending

人的一生 必须要学会做一件事 而且要做到透彻 才不枉此生... 共勉 💪。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1836504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过ModelScope开源Embedding模型将图片转换为向量

本文介绍如何通过ModelScope魔搭社区中的视觉表征模型将图片转换为向量&#xff0c;并入库至向量检索服务DashVector中进行向量检索。 ModelScope魔搭社区旨在打造下一代开源的模型即服务共享平台&#xff0c;为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品&#xf…

【MySQL】聊聊数据库是如何保证数据不丢的

对于一个存储系统来说&#xff0c;其中比较关键的核心组件包含&#xff0c;网络、存储模型、持久化、数据结构等。而数据如何保证不丢失&#xff0c;对于不同的存储系统来说&#xff0c;比如Redis采用AOF和RDB的方式进行混合使用&#xff0c;而MySQL采用日志进行保证。也就是re…

SQL注入-中篇

SQL盲注 一、时间盲注 模拟环境&#xff1a;Less-9 概述 延迟注入&#xff0c;一种盲注的手法&#xff0c;提交对执行时间敏感的sql语句&#xff0c;通过执行时间的长短来判断是否执行成功。 时间注入函数 sleep() if() ascii() substring() length() mid()判断是否存在延…

如何解决 NumPy 无法计算其中一个 5 元素列表的标准差的问题

问题背景 在使用 NumPy 计算统计结果时发现&#xff0c;NumPy 能够接受原始数据列表来计算标准差&#xff0c;却无法接受经过计算后的结果列表。尝试将 std(f10) 替换为 std(solf10)&#xff0c;但引发了错误&#xff1a;AttributeError: Float object has no attribute sqrt。…

【前端】 nvm安装管理多版本node、 npm install失败解决方式

【问题】If you believe this might be a permissions issue, please double-check the npm ERR! permissio或者Error: EPERM: operation not permitted, VScode中npm install或cnpm install报错 简单总结&#xff0c;我们运行npm install 无法安装吧包&#xff0c;提示权限问题…

Apache Royale

Apache Royale 顶级项目 Apache Royale 之前adobe的flex&#xff0c;由于浏览器flash&#xff0c;安全沙箱问题&#xff0c;逐步退出市场&#xff0c;当年flex也就是AS3&#xff0c;浏览器统一兼容问题又停止了。 接着要说明一点&#xff0c;HTML5的自适应是在flex之后&#x…

【正则表达式】入门

参考视频&#xff1a;10分钟快速掌握正则表达式_哔哩哔哩_bilibili 这个网站用来测试写的正则表达式效果&#xff1a;regex101: build, test, and debug regex 示例&#xff1a; 限定符 ? 表示前一个字符可有可无 比如这里输入&#xff1a;de? 匹配结果可以得到d和de * 前…

数据安全未来之路,天空卫士荣誉领榜《中国数据安全50强(2024)》

《中国数据安全50强&#xff08;2024&#xff09;》 数世咨询首份《中国数据安全50强&#xff08;2024&#xff09;》报告发布。天空卫士凭借其卓越的技术创新、市场领导力、业务收入能力和企业发展能力&#xff0c;在众多竞争者中脱颖而出&#xff0c;荣登50强榜单&#xff0…

26 红黑树

目录 1.概念 2.性质 3.节点定义 4.结构 5.插入 6.验证 7.删除 8.红黑树和avl树比较 9.应用 概念 是一种二叉搜索树&#xff0c;但在每个节点上增加一个存储位表示节点的颜色&#xff0c;可以是red或black。通过对任何一条从根到叶子的路径上各个节点着色方式的限制&#xff…

【嵌入式】适配大多数STM32的最小系统设计

大多数的参赛作品以及毕业设计中都仅仅简单的使用STM32F103最小系统板加上洞洞板或面包板。这样的设计虽然可以进行功能演示&#xff0c;但是由于市面上的最小系统板太过简单&#xff0c;并没有发挥出STM32系列MCU的强大功能&#xff0c;而且看起来很不美观&#xff0c;为了在参…

排序——快速排序

目录 思想 演示 代码实现 解释 优化 三数取中 小区间优化 补充 挖坑法 双指针法 非递归实现 思想 快速排序是一种二叉树结构的交换排序方法。 基本思想为&#xff1a;任取待排序元素序列中的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&am…

从零开始理解 XML 和 JSON 的区别

在这篇文章中&#xff0c;我们将深入探讨XML和JSON这两种数据格式的关键异同点&#xff0c;以便读者可以根据项目需求做出明智的技术选择。 了解XML XML&#xff08;Extensible Markup Language&#xff09;是一种用于数据定义的标记语言&#xff0c;最初由万维网联盟&#x…

【调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法】

调试笔记-系列文章目录 调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法 文章目录 调试笔记-系列文章目录调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法 前言一、调试环境操作系统&#xff1a;Windows 10 专业版调…

烂笔头笔记:为JDK安装Charles证书,让你的请求能够像在浏览器中那样被抓包

为什么要为JDK安装Charles证书 众所周知&#xff0c;https就是为了防止中间过程被拦截从而导致数据泄密的。若强行加入Charles代理&#xff0c;数据被解密后再被其重新加密&#xff0c;数据已经被“破坏”&#xff0c;客户端从而拒绝建立连接或解析内容。 #mermaid-svg-ksLo5W…

零样本学习及应用

传统的图像分类任务只是期望模型可以预测未见过图像的类别&#xff0c;而零样本学习则旨在预测从未见过的类别。对于原始图像分类任务来说&#xff0c;为每个类别收集大量训练数据对于最终拥有一个稳健的模型非常重要。然而&#xff0c;要获得大量的标注数据并不总是那么容易。…

【Unity设计模式】观察者模式,发布订阅模式,事件总线

前言 最近在学习Unity游戏设计模式&#xff0c;看到两本比较适合入门的书&#xff0c;一本是unity官方的 《Level up your programming with game programming patterns》 ,另一本是 《游戏编程模式》 这两本书介绍了大部分会使用到的设计模式&#xff0c;因此很值得学习 本…

Redis小对象压缩

小对象压缩存储 如果Redis内部管理的集合数据结构很小&#xff0c;他会使用紧凑存储形式压缩存储。 Redis的ziplist是一个紧凑的字节数组结构&#xff0c;如下图所示&#xff0c;每个元素之间都是紧挨着的。 如果他存储的是hash结构&#xff0c;那么key和value会作为两个ent…

UE5 C++ 跑酷游戏练习 Part1

一.修改第三人称模板的 Charactor 1.随鼠标将四处看的功能的输入注释掉。 void ARunGANCharacter::SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) {// Set up action bindingsif (UEnhancedInputComponent* EnhancedInputComponent CastChecked&…

微服务开发与实战Day11 - 微服务面试篇

一、分布式事务 1. CAP定理 1998年&#xff0c;加州大学的计算机科学及Eric Brewer提出&#xff0c;分布式系统有三个指标&#xff1a; Consistency&#xff08;一致性&#xff09;Availability&#xff08;可用性&#xff09;Partition tolerance&#xff08;分区容错性&am…

“Git之道:掌握常用命令,轻松管理代码“

目录 1. 初始化和配置 2. 提交和更新 3. 分支和合并 4. 查看和比较 5. 远程仓库 6. 文件操作命令 1. 初始化和配置 git init&#xff1a;在当前目录初始化一个新的Git仓库git config&#xff1a;配置Git的全局或局部选项git clone&#xff1a;从远程仓库克隆一个本地副本…