JavaScript:如何在按下两个按钮后得到警报

我需要制作一个函数,用于检测在函数(reqKeysToFunc)的第一个参数(keyset)中指定的onkeydown事件。一旦检测到,这将调用函数的第二个参数(myFunc)中指定的函数。下面JavaScript:如何在按下两个按钮后得到警报

我当前的代码显示当按下任一ž中号警报,但我想提醒展示后他们两个被按下,而不只是一个。另外,我希望能够为keyset参数输入不同的字母,但我不知道如何在函数中定义此参数。

function reqKeysToFunc(keySet, myFunc) { 

document.onkeydown = function(event) {

"use strict";

var myKey = event.key.toUpperCase();

var keySet = 'ZM';

if (keySet.search(myKey) > -1) {

document.onkeydown = null;

myFunc();

}

}

}

function tmp() {

alert('hello');

}

reqKeysToFunc('ZM', tmp);

回答:

声明一个变量并保存指望上按一下按钮,然后检查按钮获得点击次数和变量值1,则显示警告

回答:

像这样的东西应该做的工作。 将按键存储在对象中。并检查set中不同按键的数量是否等于set中的字母数量。

function reqKeysToFunc(keySet, myFunc) { 

var pressedKeys = {};

document.onkeydown = function(event) {

"use strict";

var myKey = event.key.toUpperCase();

//var keySet = 'ZM'; //remove this line - keySet is defined as an argument

if (keySet.search(myKey) > -1) {

pressedKeys[myKey] = true;

document.onkeydown = null;

if(pressedKeys.entries().filter((key, val) => val).length === keySet.length) {

myFunc();

}

}

}

}

function tmp() {

alert('hello');

}

reqKeysToFunc('ZM', tmp);

回答:

我希望告警显示两个人都被压制,而不只是一个后。

你可以使用你想检测的每个键的标志来做到这一点。当按下Z时,zFlag变量设置为true。当按下M时,mFlag变量设置为true。只有一旦两个标记都被设置,alert函数才会被调用。

见这个例子:

var zFlag = false,  

mFlag = false;

function reqKeysToFunc(keySet, myFunc) {

document.onkeydown = function(event) {

"use strict";

var myKey = event.key.toUpperCase();

var keySet = 'ZM';

if (keySet.search(myKey) > -1) {

if (myKey == 'Z') { // if Z was pressed

zFlag = true;

} else { // if M was pressed

mFlag = true;

}

if (zFlag && mFlag) { // if both keys have been pressed

document.onkeydown = null;

myFunc();

}

}

}

}

function tmp() {

alert('hello');

}

reqKeysToFunc('ZM', tmp);

document.body.focus(); // so you don't have to click before typing

而且,我希望能够把在密钥集参数不同的字母,但我不知道如何定义这个在功能范围内。

您有动态定义键集的基础:将其作为参数传递给reqKeysToFunc()。您只需要删除函数中的静态var keyset声明,创建一个数组来存储哪些键已被按下,哪些没有按下,然后检查每个按键。

参见此溶液(用ZMD传递作为键集):

var zFlag = false,  

mFlag = false;

function reqKeysToFunc(keySet, myFunc) {

var keySetArray = keySet.split(''); // get an array of keys

document.onkeydown = function(event) {

"use strict";

var myKey = event.key.toUpperCase();

if (keySetArray.indexOf(myKey) > -1) {

keySetArray.splice(keySetArray.indexOf(myKey), 1); // remove the pressed key from the array

if (!keySetArray.length) { // if all keys have been pressed

document.onkeydown = null;

myFunc();

}

}

}

}

function tmp() {

alert('hello');

}

reqKeysToFunc('ZMD', tmp);

document.body.focus(); // so you don't have to click before typing

回答:

这个例子让你定义序列来查找的阵列。它存储用户在全局调用的currentSequence中输入的部分序列。如果整个序列被成功键入,myFunc将与输入的序列一起被调用。

var sequences = ['ZM', 'AB'];  

var currentSequence = "";

document.onkeydown = function(event) {

"use strict";

var myKey = event.key.toUpperCase();

// see if the current sequence is valid

var valid = sequences.filter(function (el) {

return el.indexOf(currentSequence + myKey) === 0;

});

if (!valid.length) {

// current sequence is not valid, start over

currentSequence = "";

} else {

currentSequence += myKey;

// see if the current sequence is complete

var found = valid.indexOf(currentSequence);

if (found > -1) {

// user typed a complete sequence

myFunc(currentSequence);

currentSequence = "";

}

}

}

function myFunc(sequence) {

alert("You typed " + sequence);

}

Type stuff

回答:

我已经做到了这一点,这似乎已经奏效:

function reqKeysToFunc(keySet, myFunc) { 

document.onkeydown = function(event) {

"use strict";

var myKey = event.key.toUpperCase();

if (keySet.search(myKey) > -1) {

keySet = keySet.replace(myKey, '');

if(keySet === '') {

document.onkeydown = null;

myFunc();

}

}

}

}

function tmp() {

alert('hello');

}

reqKeysToFunc('ZM', tmp);

以上是 JavaScript:如何在按下两个按钮后得到警报 的全部内容, 来源链接: utcz.com/qa/264261.html

回到顶部