您好我有一个用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);
})
});
答案 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;
答案 1 :(得分:0)
我无法在前2秒禁用输入,因此我只是隐藏选项并在2秒后显示它们。当选项不可见时,人们不会尝试回答。不是完美的解决方案,但它有效。
<style> .QuestionBody { display: none;} </style> //in qualtrics
对于有类似问题的人来说,这可能是一个有用的技巧。