zoukankan      html  css  js  c++  java
  • js中文输入法字符串截断

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>js中文输入法字符串截断</title>
    </head>
    
    <body>
    
        <p>
            <input type="text" class="title-input">
            <span class="title-length">0</span> / 10
        </p>
    
    
    
    
        <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
        <script>
            $(function () {
                var titleInput = $(".title-input"),
                    titleLength = $(".title-length");
                titleInput.on("keyup", function () {
                    var text = $.trim(titleInput.val());
                    titleInput.val(text);
                    titleLength.html(text.length);
                }).on("input propertychange", function () {
                    var text = $.trim(titleInput.val());
                    text.length > 10 && titleInput.val(text.substring(0, 10));
                }).on("compositionstart", function () {
                    $(this).prop("comStart", true);
                    console.log("中文输入start");
                }).on("compositionend", function () {
                    $(this).prop("comStart", false);
                    console.log("中文输入end");
                });
            });
        </script>
    </body>
    
    </html>

    1、事件input(ie9+)、 propertychange(ie8-) 用来监听用户的输入;
    字母、数字是没问题的,但是中文输入法时候不同浏览器表现不同,有的浏览器会在输入拼音时就会进入判断;

    2、复合事件composition event(ie9+),用于处理IME的输入序列:
    (1)compositionstart:在IME的文本复合系统打开时触发,表示要开始输入了。
    (2)compositionupdate:在向输入字段中插入新字符时触发。
    (3)compositionend:在IME的文本复合系统关闭时触发,表示返回正常键盘的输入状态。

  • 相关阅读:
    setTimeout的时间设为0的问题
    nodejs的简单服务器程序
    使用Promise规定来处理ajax请求的结果
    使用myfocus制作焦点图
    给Array添加删除重复元素函数
    css派生选择器
    Javascript 参数传递
    Node.js 搞Javascript开发的无论如何要尝试一下
    CSS九宫格带边框的多种实现
    80%人会答错的JS基础面试题
  • 原文地址:https://www.cnblogs.com/huanlei/p/6472931.html
Copyright © 2011-2022 走看看