var jsPsychSurveyHtmlForm = (function (jspsych) { 'use strict'; const info = { name: "survey-html-form", parameters: { /** HTML formatted string containing all the input elements to display. Every element has to have its own distinctive name attribute. The
"; display_element.innerHTML = html; if (trial.autofocus !== "") { var focus_elements = display_element.querySelectorAll("#" + trial.autofocus); if (focus_elements.length === 0) { console.warn("No element found with id: " + trial.autofocus); } else if (focus_elements.length > 1) { console.warn('The id "' + trial.autofocus + '" is not unique so autofocus will not work.'); } else { focus_elements[0].focus(); } } display_element .querySelector("#jspsych-survey-html-form") .addEventListener("submit", (event) => { // don't submit form event.preventDefault(); // measure response time var endTime = performance.now(); var response_time = Math.round(endTime - startTime); var this_form = display_element.querySelector("#jspsych-survey-html-form"); var question_data = serializeArray(this_form); if (!trial.dataAsArray) { question_data = objectifyForm(question_data); } // save data var trialdata = { rt: response_time, response: question_data, }; display_element.innerHTML = ""; // next trial this.jsPsych.finishTrial(trialdata); }); var startTime = performance.now(); /** * Serialize all form data into an array * @copyright (c) 2018 Chris Ferdinandi, MIT License, https://gomakethings.com * @param {Node} form The form to serialize * @return {String} The serialized form data */ function serializeArray(form) { // Setup our serialized data var serialized = []; // Loop through each field in the form for (var i = 0; i < form.elements.length; i++) { var field = form.elements[i]; // Don't serialize fields without a name, submits, buttons, file and reset inputs, and disabled fields if (!field.name || field.disabled || field.type === "file" || field.type === "reset" || field.type === "submit" || field.type === "button") continue; // If a multi-select, get all selections if (field.type === "select-multiple") { for (var n = 0; n < field.options.length; n++) { if (!field.options[n].selected) continue; serialized.push({ name: field.name, value: field.options[n].value, }); } } // Convert field data to a query string else if ((field.type !== "checkbox" && field.type !== "radio") || field.checked) { serialized.push({ name: field.name, value: field.value, }); } } return serialized; } // from https://stackoverflow.com/questions/1184624/convert-form-data-to-javascript-object-with-jquery function objectifyForm(formArray) { //serialize data function var returnArray = {}; for (var i = 0; i < formArray.length; i++) { returnArray[formArray[i]["name"]] = formArray[i]["value"]; } return returnArray; } } } SurveyHtmlFormPlugin.info = info; return SurveyHtmlFormPlugin; })(jsPsychModule);