Toggle menu
862
3.8K
30.2K
279.1K
Catglobe Wiki
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Mark answer option with keyboard

From Catglobe Wiki
Revision as of 10:54, 2 March 2009 by Catglobe (talk | contribs) (New page: == Challenge == You want the respondent to be able to answer a question by hitting a button on his keyboard. You can specify both which key on the keyboard that should be used, and which ...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Challenge

You want the respondent to be able to answer a question by hitting a button on his keyboard. You can specify both which key on the keyboard that should be used, and which answer option that should be answered.

Example

Code

//which key on the keyboard that should mark the answer option. The code 32 refers to the space key
var keyCodetoReactOn = 32;

//enabels you to find out which numerical codes that belongs to which keys on the keyboard.
//Change false into true, and you will have a dialog that shows you the key code each time you hit a key. 
//When you have found out which code that should mark the answer option, you change true back to false (mostly use for debugging)
var displayKeyCode = false;

//information on which answer option that should be marked when the respondent uses his keyboard. 
//The answer option list has an index starting with zero when you are referring to answer options with this script. 
//The number 0 therefore refers to the answer option with the value 1. 
//If you want to refer to an answer option with the value 99, you write 98 in the script.
var answerOptionIndexToCheck = 0;

//the question label of the question where you run the script.
var qLabel = "Q1";

//the text that should be on the Next button. 
//Note that this text will be the same for all languages if your questionnaire is programmed in multiple languages.
var buttonText = "Recognize";

//It is advisable that you hide the Next button on questions where you use this script.
// Otherwise the respondent will have two buttons, which can be confusing

function myHandler(e)
{
   if (displayKeyCode)
      alert(e.keyCode);
   if (e.keyCode == keyCodetoReactOn)
      recognize();
}
function recognize()
{
   quest.options[answerOptionIndexToCheck].checked = true;
   document["query"]["QUESTION." + qLabel][answerOptionIndexToCheck].checked = true;
   moveForward();
}
function moveForward()
{
   document["query"]["dir"].value = "next";
   document["query"].submit();
}
question.prototype.getNavigationPanel = function()
{
   var sres = "";

   if (this.backvisible) sres += "<input type=\"button\" name=\"back\" value=\"" + this.backtext + "\" tabindex=1000 onclick=\"" + this.reference + ".back();\">";
   if (this.resetvisible) sres += "<input type=\"button\" name=\"reset\" value=\"" + this.resettext + "\" tabindex=1001 onclick=\"" + this.reference + ".reset();\">";
   if (this.closevisible) sres += "<input type=\"button\" name=\"close\" value=\"" + this.closetext + "\" tabindex=1002 onclick=\"" + this.reference + ".close();\">";
   sres += "<input type=\"button\" name=\"spaceHandler\" onclick=\"recognize();\" onkeydown=\"return myHandler(event)\" value=\"" + buttonText + "\" tabindex=0>";
   if (this.nextvisible) sres += "<input type=\"submit\" name=\"next\" onkeydown=\"return myHandler(event)\" value=\"" + this.nexttext + "\" tabindex=0>";
   return sres;
}
question.prototype.onInit = function()
{
   document["query"]["spaceHandler"].focus();
}