我有一个输入字段,我正在收听键盘事件。
使用日语输入法我开始输入字符,事件没有被触发;当输入字符被转换为平假名时会出现这种情况,并且会出现一个下拉菜单,因此用户可以选择它们的片假名或汉字版本。当用户键入时,字符显示为带下划线,用户可以通过按Enter键选择它(kanas / kanji)。之后,文本不再加下划线,并且已经提交了#39;到输入文本。
预期此行为与输入方法的工作方式一样。
但是,在文本提交之前,我并不期待接收任何键盘事件(即使那时我也希望更改事件不是键盘),因为输入是输入方法工作方式的一部分。
我正在收听键盘事件,因为我需要在用户释放回车键时触发操作。
我在输入西方和日本输入法输入时分析了事件数据,但未发现任何相关差异。
哪种方法可以解决这个问题?
此致
答案 0 :(得分:0)
您可以通过以下技术来实现:
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。