input輸入框在輸入中文時的compositionstart和compositionend事件


nput框在輸入切換中文輸入法時的輸入事件
1、compositionstart
compositionstart事件只有在輸入中文時才會觸發,觸發事件在input事件之前


如圖,在輸入中文時,先觸發compositionstart事件,然后觸發input事件打印輸入的字符不是中文輸入法則不會觸發compositionstart事件

2、compositionend
compositionend表示結束中文輸入時觸發的事件,不管最后輸入的是不是中文都會觸發


如圖可見compositionend事件是在input之后觸發

3、input
input事件就是最后輸入到輸入框的事件
4、如何應用這些事件
利用這些事件,可以在輸入中文的時候,保證在輸入完畢之后才執行input事件的代碼,不用每輸入一個字符就執行一次input事件的代碼了,如下圖
如圖,一次打一段話,只會觸發一次input事件

下面是我的代碼,做一下參考:

<!doctype html>
<html>

    <head>
        <meta charset="utf-8">
        <title>input功能</title>
        <script src="js/jquery-3.4.1.min.js"></script>
    </head>

    <body>
        <input id="ahri" type="text"/>
        <script>
            $(() => {
                let typing = false;
                //  輸入中文之前
                $('#ahri').on('compositionstart',function(event) {
                    console.log('compositionstart');
                    typing = true;
                })
                //  輸入中文之后
                $('#ahri').on('compositionend',function(event) {
                    console.log('compositionend');
                    typing = false;
                    input(event);
                })
                // 真正輸入文字
                $('#ahri').on('input',input)
                function input(event) {
                    //    正在輸入中文時就不執行后面的代碼
                    if(typing) return;
                    console.log(event.target.value);
                }
            })
        </script>
    </body>

</html>

 

版權聲明:本文為CSDN博主「昔別一展鯤鵬意」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/nosuchobjecterror/article/details/93193229


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM