javascript oninput:按下onekey触发多个事件

时间:2018-11-26 07:35:27

标签: javascript

我只是开始一个打字文本项目,而不是英文打字文本。它仅适用于孟加拉语。我的打字项目已经完成了99%的英语语言工作,但是在孟加拉语语言中,我发现了一个小而大的问题。

我有一个输入框,它将一个一个地匹配所有单词。您输入一个单词并按空格键,它将检查该单词是否匹配,并在移动后查找下一个单词。很好。

我如何检查:在输入框 输入时事件中 event.data ===“” ,而不是移至下一个单词。

但是在孟加拉语中,当我按下键“ c”(不是第一个字符,而是单词的第一个字符)时,它多次触发了oninput事件。具有各种event.data值的空格也包括在内。这就是为什么按下键盘上的c 时它会转到下一个单词。

现在您无法在控制台中找到多个事件,因为您的计算机中没有该软件。因此,为此我提供了一个简短的屏幕: see_the_picture_for_butter_understanding

onkeyup事件问题: see_the_picture

<!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>

注意事项:之所以发生这种情况,是因为我使用了名为 Bijoy Bangla 的软件来编写孟加拉语。 (这是孟加拉语打字测试所必需的)

2 个答案:

答案 0 :(得分:0)

正如@Ahmad所提到的,每次更改后都会触发'input'事件,但是您可以使用'keyup'事件来指定更具体的事件,该事件将为event对象提供更多控件和属性。例如,您将能够使用event.which语句处理'Space'。下面是一个示例:

var textBox = document.getElementById("textbox");
            textBox.onkeyup = function(e) {
            console.log(event); 
            if(event.which === 32) { //space keycode
                // move_to_the_next_word();
            }
        }

答案 1 :(得分:0)

尝试一下!

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)" />