如何避免输入中文拼音时触发 input 事件
html 结构
<input type="text" name="" id="" />
js
定义了一个输入框并添加了三个事件监听器。以下是每个部分的解释:
const input = document.querySelector("input");
let isComposite = false;
获取页面中第一个 <input> 元素,并定义了一个名为 isComposite 的布尔变量,用于跟踪输入框是否处于合成输入状态。
const search = () => {
console.log(`搜索:${input.value}`);
};
定义了一个名为 search 的函数,它将在输入框的值发生更改时被调用,并在控制台中记录搜索文本。
input.addEventListener("input", function () {
if (!isComposite) {
console.log(`output->input`);
search();
}
});
添加了一个 "input" 事件监听器,当输入框的值发生更改时触发。在监听器函数中,它首先检查输入框是否处于合成输入状态。如果不是,则在控制台中记录 "output->input",然后调用 search 函数。
input.addEventListener("compositionstart", () => {
console.log(`output->合成事件-开始`);
isComposite = true;
});
input.addEventListener("compositionend", () => {
console.log("合成事件-结束");
isComposite = false;
search();
});
添加了两个合成事件监听器:"compositionstart" 和 "compositionend"。当输入法开始输入时,会触发 "compositionstart" 事件,此时将 isComposite 的值设置为 true,以指示输入框处于合成输入状态。当输入法完成输入时,会触发 "compositionend" 事件,此时将 isComposite 的值设置为 false,然后调用 search 函数以处理最终的搜索文本。




















