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

大家好,我是瑶山,今天聊聊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

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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-19 05:26:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-19 05:26:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-19 05:26:03       82 阅读
  4. Python语言-面向对象

    2024-06-19 05:26:03       91 阅读

热门阅读

  1. 向大家推荐一个好用的云服务器

    2024-06-19 05:26:03       34 阅读
  2. 汇编语言实验五、子程序和宏

    2024-06-19 05:26:03       34 阅读
  3. 【做一道算一道】零钱兑换

    2024-06-19 05:26:03       59 阅读
  4. 音频流采样器类的实现【6】

    2024-06-19 05:26:03       35 阅读
  5. Shellcode详解

    2024-06-19 05:26:03       56 阅读
  6. 在JPA项目启动时新增MySQL字段

    2024-06-19 05:26:03       30 阅读
  7. 访问者模式

    2024-06-19 05:26:03       36 阅读
  8. 使用ReentrantLock和ThreadPoolExecutor模拟抢课

    2024-06-19 05:26:03       53 阅读
  9. 最大子段和问题

    2024-06-19 05:26:03       27 阅读