jQuery, чтобы сбросить выбор на веб-странице / конкретный вопрос Qualtrics Survey - PullRequest
0 голосов
/ 06 ноября 2019

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

У меня есть опрос Qualtrics, в котором я хотел бы использовать горячую точку сизображение карты с несколькими местами на ней. Я создал несколько регионов. Во время опроса пользователя просят выбрать местоположение. Это здорово, но я хотел бы спросить, выбрали ли они правильное местоположение.

Вариант 1: Используйте JavaScript, чтобы прослушать событие клика на странице, и выскочит подсказку(с параметрами: ok // отмена), подтверждающие их выбор. Если они нажимают «ОК», опрос переходит на следующую страницу. Если Отмена, то текущий выбор (ы) отменен или страница перезагружается, и ничего не выбрано. Я нашел некоторый код Как создать всплывающее окно в Qualtrics Survey Question , чтобы сделать окно подсказки в качестве отправной точки (см. Ниже). Однако у меня есть две проблемы:

1) Я не могу получить значение местоположения (оно говорит, что неопознано) 2) Я не знаю, как сбросить страницу / вопрос, чтобы ни один элемент не был выбран.

Вариант 2: Позвольте пользователю выбрать местоположение (я ограничил его 1 местоположением в настройках горячей точки). На следующей странице (т.е. вопрос) я могу использовать текст по трубопроводу, чтобы узнать, какой элемент был выбран ${q://QID25/ChoiceGroup/SelectedChoicesForAnswer/2} и могу спросить пользователя, было ли это правильное место. Мне бы хотелось, чтобы какой-нибудь JavaScript прослушивал клик, а затем понимал, был ли выбран Да или Нет. Если да, то перейдите на следующую страницу. Если нет, перейдите на предыдущую страницу. Моя проблема

1) как получить значение Да / Нет 2) как сбросить выборы Горячей точки.

Чтобы помочь, вот небольшая картина горячей точки (размыто намеренно!):

Q25 Hot spot showing location user needs to select

========================================================= Код варианта 1 (любезно предоставлено выше по ссылке) Примечание: яЯ не эксперт по JavaScript, я думаю, что есть некоторые фрагменты кода, которые на самом деле не требуются, но я оставил их, однако, пожалуйста, не стесняйтесь помечать их, чтобы я мог выучить!

Шаг 1: Вставьте следующий код в внешний вид -> расширенный -> добавить пользовательский CSS. Это необходимо для создания дополнительной кнопки, которую можно использовать для вызова сценария.

#CustomButton{
border: none;
    color: #fff;
    font-size: 16px;
    padding: 8px 20px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    -ms-border-radius: 4px;
    -o-border-radius: 4px;
    border-radius: 4px;
    cursor: pointer;
    margin: 0;
    text-align: center;
    text-decoration: none;
    -webkit-appearance: none;
    transition: background .3s;
    background-color: #c32432;
}

Шаг 2: Q25 Вставьте следующий код в js (onload) вопроса, чтобы вызвать подсказкуполе, когда происходит первый щелчок по странице (т. е. этот процесс эффективно нажимает на customButton, который вызывает код js на шаге 3)

Qualtrics.SurveyEngine.addOnload(function()
{
        this.questionclick = function(event,element){
        $('CustomButton').click();
    };

});

Шаг 3: Q25 Вставьте следующий код в js (onready) вопроса, для которого вы хотите, чтобы появился поповер:

Qualtrics.SurveyEngine.addOnReady(function()
{
const that=this;
    this.hideNextButton();
    var btn = jQuery('<div id="Buttons"><input id="CustomButton" class="NextButton Button"  title="  Next  " type="button" name="NextButton" value=" Next  "  aria-label="Next"></div>') //I can add hidden="True" if I wanted to hide this button on the screen.
    jQuery('#Buttons').append(btn);

    jQuery('#CustomButton').on('click', function(){
        var txt;
        var e= jQuery("[id='QR~QID25']").val() //<=== need help to retrieve location selected
        var r = confirm("You chose this location, please confirm this is correct? "+e);
         if (r == true) {
                 that.clickNextButton();
         } else {
                 //how do I clear the selection(s) / reset the page?
          }

    });

});

========================================================= Код варианта 2

Шаг 1: Вставить Q25следующий код в js (onload) вопроса для автоматического перехода к следующему вопросу при первом щелчке

Qualtrics.SurveyEngine.addOnload(function()
{
        this.questionclick = function(event,element){
        $('NextButton').click();
    };

});

Следующий вопрос (Q28) предлагает пользователю подтвердить правильность выбора (см. рис.):Q28

Шаг 2: Q28 Вставьте следующий код в js (onReady) вопроса. Примечание. Этот код не является конечным продуктом, но я пытаюсь выработать синтаксис, чтобы сначала получить значение. Код не работает в настоящее время, поскольку он ничего не дает мне в консоли. Я также немного не уверен, правильно ли я идентифицировал личность. Короче говоря, я застрял на получении значения Да / Нет, а также в Варианте 1 застрял на том, как сбросить выбор горячей точки на предыдущей странице.

Исходный источник: Получить выбранныйответ без надобности в пипетке

Qualtrics.SurveyEngine.addOnReady(function()
{
    document.getElementById("QR~QID28").onchange = function(element){
       //console.log(element); // use console to look at element to find what you need in the question;
       var ele_var1=element.target.value.toString(); // gets selected option value from question;
       var ele_var=element.currentTarget[ele_var1].Text; // gets text value of selected option;

       /*document.getElementById("QR~QID6").value=ele_var; //updates text question;*/

if (var == "Yes") {
                 that.clickNextButton();
         } else {
                that.clickPreviousButton();
          }

   }
});

На скриншоте окна DevTools (см. Рис. Ниже) я показал, что выбрал «ДА», но не думаю, что код вытягивает ответ. Это - то, где мое отсутствие знания HTML и JS останавливает меня, поэтому буду признателен за некоторую помощь.

enter image description here

Если вы добрались до сути этого вопроса- Большое спасибо за чтение - и еще больше спасибо, если вы можете ответить и дать мне несколько советов! :)

Спасибо

Удочка

1 Ответ

0 голосов
/ 06 ноября 2019

Вариант 1 невозможен, поскольку определения региона находятся внутри SVG.

В варианте 2 в вашем сценарии есть ряд ошибок. Кроме того, ты делаешь это нелегко. Также вам нужно скрыть кнопки «следующий / предыдущий» и задать вопрос на отдельной странице. Попробуйте:

Qualtrics.SurveyEngine.addOnReady(function() {
  var qobj = this;
  jQuery("#Buttons").hide();
  var q = jQuery("#"+qobj.questionId);
  q.find("input:first").click(function() { qobj.clickNextButton(); });
  q.find("input:last").click(function() { qobj.clickPreviousButton(); });
});
...