2016-08-15 7 views
1

Несколько месяцев назад я использовал отличный совет по поводу here, чтобы создать опрос в Qualtrics с некоторым javascript код, который сохранил ответы людей (заданные перемещением слайдера) в виде встроенных данных. Все зависит от возможности вызова некоторых функций при нажатии кнопки «Далее», как показано в разделе $('NextButton').onclick = function (event) в приведенной выше ссылке.На Qualtrics, как сохранить внедренные данные с помощью javascript (учитывая, что qualtrics недавно был обновлен, а старое решение SO больше не работает)

Я хотел повторно использовать это обследование в эти выходные и обнаружил, что данные больше не сохраняются. Поймав немного, я понял, что в настоящее время любая такая функция теперь будет запускаться только при первом нажатии кнопки «Следующий», а не в любое последующее время. Другими словами, точно такой же javascript будет либо работать, либо ничего не делать в зависимости от того, произойдет ли это при первом нажатии следующей кнопки.

Я отправил Qualtrics попросить совета, и их лица поддержки по почте обратно со следующим:

Старое приложение, которое провели наши исследования будет перезагрузить страницу каждый раз, когда вы пошли на новую страницу в опросе. Текущее приложение, которое проводит наши опросы, является одностраничным приложением, и переход на следующую страницу в опросе не обновляет всю страницу, он просто представляет другой раздел.

Я не мог найти что-либо на веб-сайте Qualtrics дает более подробную информацию о вышеупомянутом обновлении, или указывающей, есть ли новый селектор CSS, который может быть использован для выбора кнопки текущий отображенный «рядом», заменив $ («NextButton»), и я понятия не имею, как реконструировать веб-страницу опроса Qualtrics, чтобы разобраться в себе.

Может ли кто-нибудь предложить, как код в связанном ответе выше может быть изменен для работы на обновленной платформе Qualtrics? Или кто-нибудь может подтвердить, работает ли их старый код, и в этом случае я неправильно определяю, в чем проблема.

У меня недостаточно репутации, чтобы прокомментировать вышеупомянутое решение, чтобы указать на эту проблему, но, возможно, кто-то другой может это сделать. Я обновлю это, если получаю больше информации от поддержки Qualtrics.

ответ

2

В Qualtrics используются два двигателя обзора: более старый SE и новый JFE. Поддержка Qualtrics имела в виду JFE. Вы можете заставить Qualtrics использовать SE, добавив параметр Q_JFE = 0 в ссылку опроса. Это может быть быстрым решением.

Таким образом, добавление слушателя событий в NextButton никогда не работало надежно с SE или JFE. У Qualtrics есть свои собственные слушатели событий на следующей кнопке, которые мешают. Самый надежный метод - использовать JavaScript, чтобы скрыть NextButton, а затем добавить свою собственную кнопку, которая выполняет любой процесс, который вам нужен, а затем в конце нажмите NextButton. См. Пример here.

1

Я не пробовал предлагать предложение T.Gibbon's Q_JFE=0, и предложение скрыть кнопку «Далее» не сработало для меня (хотя это возможно только потому, что я сделал это неправильно - возможно, кто-то мог бы прокомментировать, если это сработало для них).

Когда я переслал Qualtrics, их предложение состояло в том, чтобы добавить слушателя событий следующим образом, а затем удалить его перед применением другого.

document.getElementById('NextButton').addEventListener(function (event) { 
doStuff(); 
}); 

Однако, так как я просто психолог, который хочет получить информацию быстро, а не яваскрипт программиста, я не был уверен, что просто, как идти о «удалении слушателя событий», и решил попробовать что Я думал, что это более простое решение, поскольку оно не полагается на то, что некоторые функции запускаются при нажатии кнопки «Далее».

Для каждого вопроса, который содержит ползунок, данные которого я хочу сохранить (у меня был только один такой вопрос на странице), я включил следующее, чтобы сохранить идентификатор для этого конкретного вопроса в виде встроенных данных. Идентификатор каждого вопроса сохраняется с уникальным тегом («q1ID» в следующем). У меня был один такой вопрос на странице.

Qualtrics.SurveyEngine.setEmbeddedData('q1ID', this.getQuestionInfo().QuestionID); 

Затем, когда были представлены все вопросы слайдера типа, на следующей странице я включил этот код:

Qualtrics.SurveyEngine.addOnload(function() 
{ 
    var tags = ['q1','q2', 'q3']; 

    var pipedStrings = {'QID356':'${q://QID356/TotalSum}', 
     'QID357':'${q://QID357/TotalSum}', 
     'QID358':'${q://QID358/TotalSum}'}; 

    tags.forEach(function(tag) { 
     var qID = Qualtrics.SurveyEngine.getEmbeddedData(tag + 'ID'); 
     var response = pipedStrings[qID]; 
     Qualtrics.SurveyEngine.setEmbeddedData(tag, response); 

    }); 
}); 

Сначала я попробовал то, что я думал, было более разумным:

tags.forEach(function(tag) { 
     var qID = Qualtrics.SurveyEngine.getEmbeddedData(tag + 'ID'); 
     var response = '${q://' + qID + '/TotalSum}'; 
     Qualtrics.SurveyEngine.setEmbeddedData(tag, response); 

    }); 

Но как указано here, Qualtrics не позволит вам извлекать данные, объединяя переменную в такую ​​строку. Следовательно, хотя кажется смехотворным окольным, что делать, я создал объект pipedStrings, у которого есть список всех идентификаторов вопросов, которые мне нужны (что я нашел, экспортировав опрос в текстовый файл и выполнив поиск моих тегов вопроса).

Это позволило мне сохранить ответы на вопросы ползунка в виде встроенных данных, с ключами, перечисленными в tags. Если у кого-то есть более простой подход, избегайте создания словаря предварительно форматированных строк, пожалуйста, сделайте комментарий.

+0

Почему бы просто не назначить встроенные переменные в потоке опроса, как q1ID = $ {q: // QID356/TotalSum}? –

+1

Это более общее решение, которое позволяет предположить, что это позволяет рандомизировать вопрос, что, по моему мнению, является общепринятой практикой в ​​психологических опросах, чтобы гарантировать их рассмотрение. В моем случае, например, для каждого блока отображается случайный вариант из двух возможных вариантов вопроса. Таким образом, идентификатор вопроса для «q1» может быть QID356, или это может быть QID357, в зависимости от того, какой вопрос был показан для участника. Я не понимаю, как это можно объяснить в потоке опроса, но если есть способ сделать это, пожалуйста, дайте мне знать. – Justin

+1

Еще одна причина, по которой мне нужно было это сделать (и, опять же, я думаю, это было бы достаточно распространенной потребностью). Мне нужно выполнить некоторые из ответов в зависимости от конкретных условий. Например, я должен обратить внимание на некоторые вопросы, но не на другие. – Justin

 Смежные вопросы

  • Нет связанных вопросов^_^