JavaScript:如何在按下两个按钮后发出警报

时间:2017-12-18 14:30:29

标签: javascript function onkeydown

我需要创建一个函数来检测函数(import { enableProdMode } from '@angular/core'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app/app.module'; import { environment } from './environments/environment'; if (environment.production) { enableProdMode(); } declare let Office: any; Office.initialize = (reason: any) => platformBrowserDynamic().bootstrapModule(AppModule); )的第一个参数(onkeydown)中指定的keyset事件。一旦检测到,这将调用函数的第二个参数(reqKeysToFunc)中指定的函数。

当按下 Z M 时,我当前的代码会显示警告,但我希望警告显示在两者之后被压了,而不仅仅是一个。另外,我希望能够为myFunc参数添加不同的字母,但我不知道如何在函数中定义它。

keyset

5 个答案:

答案 0 :(得分:1)

此示例允许您定义要查找的序列数组。它存储用户在名为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




答案 1 :(得分:0)

这样的事情应该可以胜任。 您将按下的键存储在对象中。并检查set中不同按键的数量是否等于set中的字母数。

   $('.button3').click(function(){
     $('.product').slideUp();
     $('.lockedin').slideUp();
     $('.developers').slideToggle('slow');   
   });

答案 2 :(得分:0)

  

我希望在按下它们之后显示警报,而不是仅显示警报。

您可以使用要检测的每个键的标记来执行此操作。当按下 Z 时,let listOne = filter(\x -> if length x > 0) ll map(\x -> head x) listOne 变量设置为zFlag。当按下 M 时,true变量设置为mFlag。只有设置了两个标志后才会调用true函数。

见这个例子:

alert

  

另外,我希望能够为keyset参数添加不同的字母,但我不知道如何在函数中定义它。

您有动态定义键集的基础:将其作为参数传递给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

答案 3 :(得分:0)

我做过这个似乎有效的方法:

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);

答案 4 :(得分:-3)

在按钮点击时声明一个变量并保存计数,然后检查按钮是否获得点击,变量值是否为1然后显示警告