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