0

Qualtrics 不提供基于日期的逻辑,我想创建一个由用户输入的日期触发的警报。具体来说,如果用户输入的日期在今天的 30 天内,我希望显示页内文本(而不是警告对话框)。

我拼凑了一个简短的脚本,可以让我部分到达那里(它计算和比较日期),但我是一个 javascript 新手,需要一些指针。

var today = new Date();
var m = today.getMonth();
var d = today.getDate();
var y = today.getFullYear();

var date = new Date(y,m,d)+30;

var mydate="${q://QID1/ChoiceTextEntryValue}";
var mydate = parseInt(mydate);

console.log(date);
console.log(mydate)

if(date>mydate)
{
    alert(mydate + " is greater than " + date);
}
else
{
    alert(mydate + " is smaller than " + date)
}

该脚本在页面加载时运行,但我不希望它在用户在文本字段中输入日期之前运行。需要在脚本中添加什么来告诉它等待用户?在 qualtrics 表单中放置我的脚本的最佳位置在哪里?

如果我希望根据我的日期计算显示表单文本(而不是警报对话框),我应该将嵌入数据写入表单并使用质量逻辑条件来显示表单文本吗?

提前感谢您教我我确信是基本的 JavaScript 知识。

4

1 回答 1

1

不是一个完整的解决方案,而是回答您的问题:

1)您想要一个在您失去对日期输入字段的关注时执行的功能。类似于以下内容,其中 dateElement 是输入字段:

dateElement.observe("blur", function(event) {
    // function code goes here
}); 

2) 通过从问题左侧的下拉菜单中单击“添加 Javascript”,将您的 javascript 添加到问题中。

3)您可以将您的条件显示文本放在<span>问题文本的标签内,并从您的 javascript 打开或关闭显示。您可以使用 innerHTML 更新跨度内的文本。 span会是这样的:

<span id="displayText" style="display:none"></span>

Javascript 将类似于:

$('displayText').innerHTML = mydate + " is smaller than " + date;
$('displayText').show();

您没有问,但您可能应该使用类似moment.js的东西来进行日期计算。

于 2015-08-07T19:31:48.453 回答