+
96
-

回答

要在输入完整中文后触发 input 事件,而不是在每输入一个字母时触发,你可以使用 JavaScript 和 HTML 的一些技巧来实现。一种常见的方法是监听 compositionend 事件,因为在输入中文时,浏览器会触发 compositionstart 事件表示开始输入,然后在输入完毕后触发 compositionend 事件,你可以在 compositionend 事件中处理输入的内容,通过变量来判断当前是否正在用中文输入,示例代码如下:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>监听输入完整中文</title>
</head>

<body>
    <input type="text" id="chineseInput">
    <script>
        var iscompositioninput=false;
            var chineseInput = document.getElementById('chineseInput');
       chineseInput.addEventListener('compositionstart', function (e) {
                // 在 compositionend 事件中处理输入的内容
               iscompositioninput=true;
                console.log('开始中文输入: ' );
            });
            chineseInput.addEventListener('compositionend', function (e) {
                // 在 compositionend 事件中处理输入的内容
                var inputValue = e.target.value;
                  iscompositioninput=false;
                console.log('输入完整中文: ' + inputValue);
            });
    
            // 如果需要在每次输入字符时触发 input 事件,可以同时监听 input 事件
            chineseInput.addEventListener('input', function (e) {
                if(!iscompositioninput){
                     // 在 input 事件中处理输入的内容
                var inputValue = e.target.value;
                console.log('输入字符: ' + inputValue);
                }
               
            });
    </script>
</body>

</html>

网友回复

我知道答案,我要回答