前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题:关于input输入框在输入法联想状态时值的问题

面试题:关于input输入框在输入法联想状态时值的问题

作者头像
用户10106350
发布2022-10-28 18:01:24
1K0
发布2022-10-28 18:01:24
举报
文章被收录于专栏:WflynnWebWflynnWeb

场景

使用 inputonInput 事件时,在输入拼音时,如 qiye,这时输入法会根据 qiye 这个拼音联想出其对应的中文,如 企业, 这时没有按回车,输入法仍旧是联想状态,但是 onInput,获取的值已经是 qiye 了,如果在 onInput 中触发接口调用,传入的值就是 qiye 这个拼音

解决方法

使用 inputcompositionend 方法

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
</head>
<body>
<div id=inputChange>
	<input id="input">
	<div style="margin-top: 50px">当前输入框中的值:<span id="inputVal"></span></div>
</div>
</body>
</html>
代码语言:javascript
复制
<script>
  const inputContainer = document.getElementById('inputChange')
  const input = inputContainer.querySelector('#input')
  const inputVal = inputContainer.querySelector('#inputVal')

  input.addEventListener('input', (e) => {
    inputVal.innerHTML = event.target.value
  })

  input.addEventListener('compositionstart', (e) => {
    console.log('compositionstart:', e)
  })

  input.addEventListener('compositionupdate', (e) => {
    console.log('compositionupdate:', e)
  })

  input.addEventListener('compositionend', (e) => {
    console.log(e.data)
    console.log('compositionend 触发:最终获取到的值:', inputVal.innerHTML);
  })
</script>

用法

下面三个事件是 DOM3 Events 中所新增的合成事件。通过这几个事件,可以明确的知道键盘在输入框中的输入状态,是否正在候选中。

事件

触发时机

compositionstart

在 IME 的文本合成系统打开时触发,表示输入即将开始

compositionupdate

在新字符插入输入字段时触发

compositionend

在 IME 的文本合成系统关闭时触发,表示恢复正常键盘输入

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WflynnWeb 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景
  • 解决方法
  • 用法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档