addEventListener.delay()可以实现吗?

时间:2018-01-12 00:40:49

标签: javascript jquery html qualtrics

您好我有一个用jquery编写的qualtrics代码。我需要实现事件监听的延迟功能。我的代码可以按键作为输入。应该有延迟功能......

我应该禁用前2000ms的密钥然后启用它们。

我的任务有3个不同的部分,所有部分都根据时间进行了调整或隐藏。

所以这是我的代码;

function disableMouse(event) {
  event.stopPropagation()
}
window.disableMouseFunction = disableMouse


Qualtrics.SurveyEngine.addOnload(function() {

  document.body.style.cursor = 'none'; // hide cursor

  setTimeout(function() {
    document.addEventListener('keydown', function keydownCallback(e) {
      var that = this;
      var aa = null;
      switch (e.keyCode) {

        case 37: // left arrow key                 
          that.setChoiceValue(1, true) //pic a     
          aa = 1;
          break;

        case 39: // right arrow key                  
          that.setChoiceValue(2, true) //pic B     
          aa = 1;
          break;
      }
      if (aa) {
        document.removeEventListener('keydown', keydownCallback, true);
        //move to the next page after delay
        that.clickNextButton();
      }
    });
  }, 1000);
});

Qualtrics.SurveyEngine.addOnReady(function() {
  setTimeout(function() {
    jQuery('#showfirst').delay(500).hide(1);
    jQuery('#hideafter').delay(500).show(1);
    jQuery('#hideafter').delay(2000).hide(1);
    jQuery('#reveallater').delay(2550).show(2);
  })
});

2 个答案:

答案 0 :(得分:0)

您必须收听该文档,因为this中根本没有input ...

我有一个功能,试一试。



function disableSurveyArrows(delay){  // delay is in seconds
  var ArrowsDisabled = true;

  setTimeout(function(){
    ArrowsDisabled = false;
    $("#onoff").html("Arrows enabled now.")
  },5000);


  $(document).on("keydown",function(e){
    console.clear();
    if(ArrowsDisabled){
      console.log(".");
      return false;
    }
    if(e.which==37){
      console.log("Left");
    }
    if(e.which==39){
      console.log("Right");
    }
  });
}

// Call the function. 5 seconds is passed here.
disableSurveyArrows(5);

span{
  margin:calc(25% - 50px);
}
#onoff{
  font-size:4em;
  text-align:center;
  width:100%
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<span style="font-size:100px">←</span><span style="font-size:100px">→</span>
<div id="onoff">Arrows disabled</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我无法在前2秒禁用输入,因此我只是隐藏选项并在2秒后显示它们。当选项不可见时,人们不会尝试回答。不是完美的解决方案,但它有效。

<style> .QuestionBody { display: none;} </style> //in qualtrics

对于有类似问题的人来说,这可能是一个有用的技巧。