300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 实时监控input输入框 获取输入的内容 去除拼音

实时监控input输入框 获取输入的内容 去除拼音

时间:2023-05-29 07:48:08

相关推荐

实时监控input输入框 获取输入的内容 去除拼音

通过查阅资料得知在输入中文(包括语音识别时)会先后触发compositionstart、compositionend事件,类似于keydown和keyup的组合。

触发compositionstart时,文本框会填入 “虚拟文本”(待确认文本),同时触发input事件;在触发compositionend时,就是填入实际内容后(已确认文本)。

先看看 compositionstart的描述和compositionend的描述

compositionstart事件触发于一段文字的输入之前(类似于keydown事件,但是该事件仅在若干可见字符的输入之前,而这些可见字符的输入可能需要一连串的键盘操作、语音识别或者点击输入法的备选词)。

compositionend当文本段落的组织已经完成或取消时,会触发该事件。

解决办法:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<script src="/jquery/1.8.3/jquery.min.js"></script>

<title></title>

</head>

<body>

<input id="txt" type="text">

<script>

var flag = true;

$('#txt').on('compositionstart',function(){

flag = false;

})

$('#txt').on('compositionend',function(){

flag = true;

})

$('#txt').on('input',function(){

var _this = this;

setTimeout(function(){

if(flag){//TODO:添加事件

console.log($(_this).val());

}

},0)

})

</script>

</body>

</html>

tips:

为什么使用延时器?

因为选词结束的时候input会比compositionend先一步触发,此时flag还未调整为true,所以不能触发到console,故用setTimeout将其优先级滞后。

转载:/lonhon/p/7643095.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。