2016-10-04 3 views
1

В Qualtrics можно установить начальное положение перетаскиваемых баров (то есть их ширину) с помощью «Custom Start Position». Это делается путем перетаскивания полос до нужной ширины при редактировании обзора. Однако я ищу способ установить ширину баров в исходное положение с помощью JavaScript (или прототипа JavaScript).Установите перетаскиваемые столбцы в пользовательскую начальную позицию с javascript в Qualtrics

Вот мои попытки: сначала (успешно) попытаться изменить цвет баров (в градусах и на jsfiddle), затем (успешно) попытаться адаптировать эти попытки изменить ширину полосы на jsfiddle; и затем застревает, потому что то, что работает на jsfiddle, не работает на Qualtrics.


В Qualtrics, можно изменить цвет перемещаемых ползунков следующего прототипа JavaScript (адаптирован из this answer):

Qualtrics.SurveyEngine.addOnload(function() 
{ 
    //change the color of all bars to red for testing 
    $(this.questionId).select('.bar').each(function(name, index) { 
     name.style.backgroundColor = "red"; 
    }); 
}); 

В результате можно видеть (и проверен) here. Проверка обзора в ссылке действительно показывает, что background-color был установлен в красный цвет: <div id="QID2~2~bar" class="bar" style="width: 103px; background-color: red;"></div>. Ширина аргумент также присутствует, то есть я должен иметь возможность изменять ширину с помощью следующего кода (который действительно делает работу на jsfiddle при установке библиотеки для прототипа):

$("test").select('.bar').each(function(name, index) { 
     name.setStyle({ width: '40px'}); 
}); 

Однако этот код не работает Qualtrics (при замене $("test")$(this.questionId) и включая код в функции Qualtrics addOnload).


Следующая Javascript работает на Qualtrics для изменения штрих цвета (адаптировано из this answer):

Qualtrics.SurveyEngine.addOnload(function() 
{ 
    //change the color of all bars to red for testing 
    var bar = document.querySelectorAll('.bar'); 
    for (var i=0; i < bar.length; i++) { 
     bar[i].setAttribute("style", "background-color:red"); 
    } 
}); 

С помощью этого кода можно также регулировать ширину Div на jsfiddle:

var bar = document.querySelectorAll('.bar'); 
for (var i=0; i < bar.length; i++) { 
bar[i].setAttribute("style", "width:40px"); 
} 

Однако снова это не имеет никакого эффекта в Qualtrics.


Так, Короче: Есть ли способ программно дать столбикам в Qualtrics начальной позиции, например, путем установки их ширины до 50% от родительского DIV?


Update:

После углубиться в Qualtrics Question API, я нашел setChoiceValue, с которым я могу программно выбрать несколько элементов выбора. Например,

Qualtrics.SurveyEngine.addOnload(function() 
{ 
    this.setChoiceValue(2,true); 

}); 

будет выбрать 2-й радио-кнопку, установив его значение истины:

enter image description here

Однако, до сих пор мне не удалось либо применить setChoiceValue к Draggable брусков или найти аналогичную эквивалент.


Update 2:

Qualtrics поддержки (которые очень дружелюбны и доступным) предположил, что setChoiceAnswerValue может быть то, что я ищу. Однако они также объяснили, что они не могут предоставлять поддержку JavaScript для JavaScript. Я взглянул на , в котором также перечислены setChoiceAnswerValue, но пока что безуспешно.

ответ

0

Я должен сделал опечатку в моем исходном коде, так как получается, что то, что я начал с фактически работает:

Qualtrics.SurveyEngine.addOnload(function() 
{ 
      $(this.questionId).select('.bar').each(function(name, index) { 
      name.setStyle({ width: '50px'}); 
      }); 
}); 
0

Вот решение для установки позиции пользовательского старта для перемещаемых слитков, используя setChoiceValue, как описано в документе Qualtrics Question API.

Ниже приведен пример кода для вопроса с 10 барами с использованием встроенных данных предыдущих вопросов.

var embedded = ["${e://Field/r1}", "${e://Field/r2}", 
"${e://Field/r3}", "${e://Field/r4}", "${e://Field/r5}", 
"${e://Field/r6}", "${e://Field/r7}", "${e://Field/r8}", 
"${e://Field/r9}", "${e://Field/r10}"]; 

for (var i = 0; i < 11; i++) { 
    var index = i + 1; 
    var choiceInput = embedded[i]; 

this.setChoiceValue(index, choiceInput); 
} 

Для установки пользовательского значения одного бара:

Qualtrics.SurveyEngine.addOnload(function() 
{ 
    this.setChoiceValue(2, "80"); 
}); 
Смежные вопросы