JS验证文本框字数并做限制和提示

效果如图;解决输入时拼音长度也算字符串长度的问题。

<!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>
</head>
<body>
    还可以输入<span id="word">10</span>个字<br />
    <textarea id="txt" maxlength="10"></textarea>
</body>
</html>
<script language="javascript" type="text/javascript">
    var txt = document.getElementById("txt");
    var txtNum = document.getElementById("word");
    var maxlength = 10;
    var sw = false; //定义关闭的开关
    txt.addEventListener("keyup", function () {
        if (sw == false) {
            countTxt();
        }
    });
    //ompositionstart在输入中文或者语音等需要等待一连串的输入的操作之前触发
    txt.addEventListener("compositionstart", function () {
        sw = true;
    });
    //compositionend在输入中文或者语音等完毕或取消时触发
    txt.addEventListener("compositionend", function () {
        sw = false;
        countTxt();
    });
    //这两个属性有点类似于“开关”,如:开始输入拼音时开关打开,不再改变监测得到的长度数值。用拼音完整输入一个或是一串文字后,开关关闭,此时得到监测的数值长度。
    function countTxt() { //计数函数
        if (sw == false) { //只有开关关闭时,才赋值
            txtNum.textContent = maxlength - txt.value.length;
        }
    }
</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值