bugfix_multiple_choice_module

This commit is contained in:
Xiaolu Bai 2017-01-13 01:57:04 -08:00
parent c602a70116
commit 467dcb0460
2 changed files with 33 additions and 29 deletions

View File

@ -99,7 +99,7 @@ window.jsPsych = (function() {
opts.display_element = document.querySelector('body'); opts.display_element = document.querySelector('body');
} else { } else {
// make sure that the display element exists on the page // make sure that the display element exists on the page
var display = document.querySelector('#'+opts.display_element); var display = opts.display_element;
if(display === null) { if(display === null) {
console.error('The display_element specified in jsPsych.init() does not exist in the DOM.'); console.error('The display_element specified in jsPsych.init() does not exist in the DOM.');
} else { } else {
@ -186,6 +186,7 @@ window.jsPsych = (function() {
}; };
core.getDisplayElement = function() { core.getDisplayElement = function() {
console.log("yo in getDisplayElement", DOM_target);
return DOM_target; return DOM_target;
}; };

View File

@ -10,7 +10,6 @@
jsPsych.plugins['survey-multi-choice'] = (function() { jsPsych.plugins['survey-multi-choice'] = (function() {
var plugin = {}; var plugin = {};
plugin.info = { plugin.info = {
@ -52,9 +51,7 @@ jsPsych.plugins['survey-multi-choice'] = (function() {
} }
} }
} }
plugin.trial = function(display_element, trial) { plugin.trial = function(display_element, trial) {
var plugin_id_name = "jspsych-survey-multi-choice"; var plugin_id_name = "jspsych-survey-multi-choice";
var plugin_id_selector = '#' + plugin_id_name; var plugin_id_selector = '#' + plugin_id_name;
var _join = function( /*args*/ ) { var _join = function( /*args*/ ) {
@ -85,12 +82,13 @@ jsPsych.plugins['survey-multi-choice'] = (function() {
// form element // form element
var trial_form_id = _join(plugin_id_name, "form"); var trial_form_id = _join(plugin_id_name, "form");
display_element.innerHTML += '<form id="'+trial_form_id'"></form>'; console.log("trial_form_id", trial_form_id)
display_element.innerHTML += '<form id="'+trial_form_id+'"></form>';
var trial_form = display_element.querySelector("#" + trial_form_id); var trial_form = display_element.querySelector("#" + trial_form_id);
console.log("trial_form", trial_form)
// show preamble text // show preamble text
var preamble_id_name = _join(plugin_id_name, 'preamble'); var preamble_id_name = _join(plugin_id_name, 'preamble');
trial_form.innerHTML += '<div id="'+preamble_id_name+'" class="'+preamble_id_name'">'+trial.preamble+'</div>'; trial_form.innerHTML += '<div id="'+preamble_id_name+'" class="'+preamble_id_name+'">'+trial.preamble+'</div>';
// add multiple-choice questions // add multiple-choice questions
for (var i = 0; i < trial.questions.length; i++) { for (var i = 0; i < trial.questions.length; i++) {
@ -131,38 +129,43 @@ jsPsych.plugins['survey-multi-choice'] = (function() {
display_element.querySelector(question_selector + " p").innerHMTL += "<span class='required'>*</span>"; display_element.querySelector(question_selector + " p").innerHMTL += "<span class='required'>*</span>";
// add required property // add required property
display_element.querySelector(question_selector + " input:radio").required = true; display_element.querySelector(question_selector + " input").required = true;
} }
} }
// add submit button // add submit button
trial_form.innerHTML += '<input type="submit" id="'+plugin_id_name+'-next" class="'+plugin_id_name+' jspsych-btn">Submit Answers</input>'; trial_form.innerHTML += '<input type="submit" id="'+plugin_id_name+'-next" class="'+plugin_id_name+' jspsych-btn">Submit Answers</input>';
trial_form.attachEventListener('submit', function(event) { trial_form.addEventListener('submit', function(event) {
event.preventDefault(); event.preventDefault();
var matches = display_element.querySelectorAll("div." + plugin_id_name + "-question");
console.log("are you getting called")
// measure response time // measure response time
var endTime = (new Date()).getTime(); var endTime = (new Date()).getTime();
var response_time = endTime - startTime; var response_time = endTime - startTime;
// create object to hold responses // create object to hold responses
var question_data = {}; var question_data = {};
//TODO this is having problems
var matches = display_element.querySelectorAll("div." + plugin_id_name + "-question"); var matches = display_element.querySelectorAll("div." + plugin_id_name + "-question");
for(var index=0; index<matches.length; index++){ var inputs = document.getElementsByTagName('input');
var radios = []
for(var i=0;i<inputs.length;i++){
if(inputs[i].checked){
radios.push(inputs[i].value)
}
}
matches.forEach(function(currentEl ,index){
console.log("currentEl", currentEl,index)
var id = "Q" + index; var id = "Q" + index;
var val = matches[i].querySelector("input:radio:checked").value;
var obje = {}; var obje = {};
obje[id] = val; obje[id] = radios[index];
Object.assign(question_data, obje); Object.assign(question_data, obje);
}); })
// save data // save data
var trial_data = { var trial_data = {
"rt": response_time, "rt": response_time,
"responses": JSON.stringify(question_data) "responses": JSON.stringify(question_data)
}; };
display_element.innerHTML = ''; display_element.innerHTML = '';
// next trial // next trial