Qualtrics API 放入自定义 javascript 时不起作用
Qualtrics API not working when put into a custom javascript
我正在做一个实验,将河内塔游戏嵌入到调查中。游戏在 Javascript 中编程并放入问题的 javascript 环境中。
我想在参与者解决问题之前禁用提交。我将 this.disableNextButton() 放在 javascript 中并且它有效。但是这个。在脚本中放入稍后的逻辑函数的 enableNextButton() 不起作用。
Qualtrics.SurveyEngine.addOnload(function()
{
/*Place Your Javascript Below This Line*/
this.disableNextButton();
Game.prototype.handleDrop = function(event, ui) {
var tower = this.getTower(jQuery(event.target));
var disk = this.getDisk(ui.draggable);
if (tower.getNum() != disk.getTower().getNum()) {
if (tower.canPlaceDisk(disk)) {
disk.setDraggableRevert(false);
tower.moveDisk(disk);
disk.position();
this.moves++;
jQuery("#moves").text(this.moves);
this.updateDraggableDisks();
this.checkSolved();
}
}
}
Game.prototype.checkSolved = function() {
if ((this.towers[1].getDisks().length==0) && (this.towers[2].getDisks().length==1) && (this.towers[2].getDisks()[0].getNum()==1)) {
this.enableNextButton();
alert("Problem Solved.");
Qualtrics.SurveyEngine.setEmbeddedData("P1.1",this.moves); /*this sentence must be inside the function, otherwise it will be evluated before the function.*/
return (this.moves);
jQuery("#startOver").click();
}
}
});
这与 "this" 对象有关吗?因为在逻辑函数中,"this"代表我定义的对象而不是Qualtrics调查引擎。如果是,我应该如何启用 enbaleNextButton 功能?
非常感谢您的帮助!
丹妮
我不确定这是你的问题(实际上我不认为是),但你可以替换:
this.enableNextButton();
与:
$('NextButton').show();
同样,您可以替换:
this.disableNextButton();
与:
$('NextButton').hide();
如果您查看 Qualtrics 函数的代码,您会发现它们只是在执行上面的命令。
编辑:Anthony 指出这是针对 hide/show 而不是 disable/enable。禁用和启用将是:
$('NextButton').disabled = true;
$('NextButton').disabled = false;
我正在做一个实验,将河内塔游戏嵌入到调查中。游戏在 Javascript 中编程并放入问题的 javascript 环境中。
我想在参与者解决问题之前禁用提交。我将 this.disableNextButton() 放在 javascript 中并且它有效。但是这个。在脚本中放入稍后的逻辑函数的 enableNextButton() 不起作用。
Qualtrics.SurveyEngine.addOnload(function()
{
/*Place Your Javascript Below This Line*/
this.disableNextButton();
Game.prototype.handleDrop = function(event, ui) {
var tower = this.getTower(jQuery(event.target));
var disk = this.getDisk(ui.draggable);
if (tower.getNum() != disk.getTower().getNum()) {
if (tower.canPlaceDisk(disk)) {
disk.setDraggableRevert(false);
tower.moveDisk(disk);
disk.position();
this.moves++;
jQuery("#moves").text(this.moves);
this.updateDraggableDisks();
this.checkSolved();
}
}
}
Game.prototype.checkSolved = function() {
if ((this.towers[1].getDisks().length==0) && (this.towers[2].getDisks().length==1) && (this.towers[2].getDisks()[0].getNum()==1)) {
this.enableNextButton();
alert("Problem Solved.");
Qualtrics.SurveyEngine.setEmbeddedData("P1.1",this.moves); /*this sentence must be inside the function, otherwise it will be evluated before the function.*/
return (this.moves);
jQuery("#startOver").click();
}
}
});
这与 "this" 对象有关吗?因为在逻辑函数中,"this"代表我定义的对象而不是Qualtrics调查引擎。如果是,我应该如何启用 enbaleNextButton 功能?
非常感谢您的帮助!
丹妮
我不确定这是你的问题(实际上我不认为是),但你可以替换:
this.enableNextButton();
与:
$('NextButton').show();
同样,您可以替换:
this.disableNextButton();
与:
$('NextButton').hide();
如果您查看 Qualtrics 函数的代码,您会发现它们只是在执行上面的命令。
编辑:Anthony 指出这是针对 hide/show 而不是 disable/enable。禁用和启用将是:
$('NextButton').disabled = true;
$('NextButton').disabled = false;