在日语输入中输入 keyup 事件

问题描述 投票:0回答:2

我有一个输入字段,我正在其中监听键盘事件。

使用日语输入法开始输入字符,但事件没有被触发;这是预期的,因为输入字符正在转换为平假名,并且会出现一个下拉菜单,以便用户可以选择它们的片假名或汉字版本。当用户键入时,字符会显示下划线,并且用户可以通过按 Enter 键来选择它的选择(假名/汉字)。之后文本不再带有下划线并“提交”到输入文本。

此行为是预期的,因为输入法的工作方式也是如此。

但是,在提交文本之前,我并不期望收到任何键盘事件(即使如此,我也期望没有键盘的更改事件),因为输入是输入法工作方式的一部分。

我正在侦听 keyup 事件,因为我需要在用户释放 Enter 键时触发操作。

我分析了在西文和日文输入法中输入回车时的事件数据,没有发现任何相关差异。

正确的处理方法是什么?

问候

javascript input cjk
2个回答
1
投票

您可以通过以下技术来实现这一目标:

  • 使用
    textarea
    代替
    input
  • 使用
    onInput
    监听器而不是
    onKeyDown
  • 检测
    onInput
  • 中的换行符

相关JavaScript代码:

function onInput(evt) {
   let val = evt.target.value;
   const nlAt = val.indexOf('\n');
   if (nlAt >= 0) {
       // A newline was detected in the input!
       // Remove the newline from the field:
       val = val.replace(/\n/g, '');
       evt.target.value = val;
       // And fire our custom onReturnKey handler:
       onReturnKey(val);
   }
}

你可以试试这个CodePen


0
投票

Inovine Scientific Meetings 诚挚邀请您参加定于 2025 年 8 月 4 日至 5 日在日本东京举行的第六届世界儿科和新生儿学大会 (WCPN 2025)。这项备受尊敬的活动将汇集来自世界各地的领先儿科医生、新生儿科医生和儿童健康专家,探讨“赋予未来几代人权力:儿童健康和新生儿实践的前沿方法”的主题。 儿科和新生儿学会议对于专注于儿童健康的医疗保健提供者的专业进步具有无价的价值。这些聚会提供了一个独特的平台来分享知识、讨论最新突破并探索儿科和新生儿护理的创新方法。与会者可以参加实践研讨会、专业研讨会,并从讲座中学习有关儿科和新生儿科的最新治疗方法、医疗技术和医疗保健政策。社交机会让专业人士能够与同行和行业领导者建立联系,海报演示则重点介绍新的研究和最佳实践。我们的会议还提供继续教育学分,这对于维持执照至关重要。总体而言,这些活动使儿科和新生儿专业人士能够保持在其领域的最前沿,并支持终身学习和职业发展。 谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.