我刚开始一个打字项目,而不是英文打字。只适用于孟加拉语。我的打字项目是99%的英语,但在孟加拉语我发现一个小但大的问题。
我有一个输入框,一个接一个的匹配所有的单词。您输入一个单词,然后按空格,它将检查单词是否匹配,然后再检查下一个单词的移动。工作很好。
我是如何检查的:在inputbox中, oninput event event.data === "大于移动到下一个单词。
但在孟加拉语中,当我按下"c“键(不是作为第一个字符,而是在单词第一字符的中间),它就会多次触发oninput事件。具有不同的event.data值也包括空间。这就是为什么当在键盘中按c键时,它只会转到下一个单词。
现在您无法在控制台中找到多个事件,因为您的计算机中没有软件。为此,我包括了一个短于此的屏幕:理解
onkeyup事件问题: 图片
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<style>
@font-face {
font-family: 'SutonnyMj';
src: url('assets/fonts/SutonnyMj.ttf'),
url('assets/fonts/sutonnymj.woff2') format('woff2'),
url('assets/fonts/sutonnymj.woff') format('woff');
font-weight: normal;
font-style: normal;
}
#textbox {
width: 200px;
height: 200px;
font-family: 'SutonnyMj';
font-size: 50px;
}
</style>
<body>
<textarea id="textbox" type="text"></textarea>
<script>
var textBox = document.getElementById("textbox");
textBox.oninput = function(e) {
console.log(event); // multiple event fire when the Software is Enable
if(event.data === " ") {
// move_to_the_next_word();
}
}
</script>
</body>
</html>注释:之所以发生,是因为我使用了一个名为 Bangla的软件来编写孟加拉语。(这是孟加拉语打字测试的要求)
发布于 2018-11-26 07:47:25
正如@Ahmad 'input‘事件所提到的,每次更改后都会触发事件,但是使用'keyup’事件可以更具体一些,这将为event对象提供更多的控制和属性。例如,您将能够使用event.which语句处理“空间”。这里有一个例子:
var textBox = document.getElementById("textbox");
textBox.onkeyup = function(e) {
console.log(event);
if(event.which === 32) { //space keycode
// move_to_the_next_word();
}
}发布于 2018-11-26 09:35:06
尝尝这个!
function runScript(e) {
if (e.keyCode == 67) {//c
console.log("you have entred 'c' char")
}
if(e.keyCode == 32){//space
console.log("space ")
}
}<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<input id="scriptBox" type="text" onkeyup="return runScript(event)" />
https://stackoverflow.com/questions/53476534
复制相似问题