首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript :按onekey多个事件触发

javascript :按onekey多个事件触发
EN

Stack Overflow用户
提问于 2018-11-26 07:35:27
回答 2查看 220关注 0票数 0

我刚开始一个打字项目,而不是英文打字。只适用于孟加拉语。我的打字项目是99%的英语,但在孟加拉语我发现一个小但大的问题。

我有一个输入框,一个接一个的匹配所有的单词。您输入一个单词,然后按空格,它将检查单词是否匹配,然后再检查下一个单词的移动。工作很好。

我是如何检查的:在inputbox中, oninput event event.data === "大于移动到下一个单词。

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

现在您无法在控制台中找到多个事件,因为您的计算机中没有软件。为此,我包括了一个短于此的屏幕:理解

onkeyup事件问题: 图片

代码语言:javascript
复制
<!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的软件来编写孟加拉语。(这是孟加拉语打字测试的要求)

EN

回答 2

Stack Overflow用户

发布于 2018-11-26 07:47:25

正如@Ahmad 'input‘事件所提到的,每次更改后都会触发事件,但是使用'keyup’事件可以更具体一些,这将为event对象提供更多的控制和属性。例如,您将能够使用event.which语句处理“空间”。这里有一个例子:

代码语言:javascript
复制
var textBox = document.getElementById("textbox");
            textBox.onkeyup = function(e) {
            console.log(event); 
            if(event.which === 32) { //space keycode
                // move_to_the_next_word();
            }
        }
票数 0
EN

Stack Overflow用户

发布于 2018-11-26 09:35:06

尝尝这个!

代码语言:javascript
复制
function runScript(e) {
    if (e.keyCode == 67) {//c
    console.log("you have entred 'c' char")
    }
    if(e.keyCode == 32){//space
    console.log("space ")
    }
    
}
代码语言:javascript
复制
<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)" />

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53476534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档