We had a request to mix fill-in-the-blank type choices with select-a-blank choices within a single question. Questionmark Perception really isn’t set up to do this, so of course I had to see if I could get around it’s limitations. You can add HTML and javascript to a question though, so I thought of this nefarious back-door trick to fool Perception into taking both answers. Unfortunately it still requires accuracy on the part of the user, so perhaps it is not very useful. They must not type spaces, and must type the answer first, then select the units – in order. That’s a lot to ask.

On the other hand, this particular quiz was set up primarily because the users are required to demonstrate absolutely perfect accuracy in this topic, so perhaps it is acceptable in this type of situation. I’ll probably add a javascript that strips spaces, too.

An example question is shown below. The user is instructed to type the calculated answer first, then select the units. The pulldown simply adds the units or whatever you want to the end of the typed answer. The entire thing is judged as a fill-in-the-blank question.


The QML for the question shown is given below. All it is doing is appending the units to the user’s answer, in the correct format.

<?xml version="1.0" standalone="no"?> <!DOCTYPE QML SYSTEM "QML_V3.dtd">


<QUESTION DESCRIPTION="12. 30mg " STATUS="Normal"> <ANSWER QTYPE="FIB" SUBTYPE="VERT"> <CONTENT TYPE="text/html" STYLE="blue"><![CDATA[<P>The order reads: Give 30mg of medication. The bottle reads 15mg/5ml. <BR>How much do you give?<BR>Instructions: type your answer, then use the Pulldown menu for the units. DO NOT TYPE ANY SPACES!</P>]]></CONTENT> <CHOICE ID="1"> <CONTENT TYPE="text/html" WIDTH="6"><![CDATA[ <SELECT id=unitSelector_%CHOICE.ID% onChange="(document.forms[0]['%CHOICE.ID%'].value)+=(document.forms[0]['unitSelect_%CHOICE.ID%'].value);alert('changing');" name=unitSelect_%CHOICE.ID%> <OPTION value=- selected>-</OPTION> <OPTION value=ml>ml</OPTION> <OPTION value=mg>mg</OPTION> </SELECT>]]> </CONTENT> </CHOICE> </ANSWER> <OUTCOME ID="right" SCORE="1"> <CONDITION>"1" MATCHES NOCASE "10ml"</CONDITION> <CONTENT TYPE="text/html"><![CDATA[You are correct.]]></CONTENT> </OUTCOME> <OUTCOME ID="wrong" SCORE="0"> <CONDITION>OTHER</CONDITION> <CONTENT TYPE="text/html"><![CDATA[Sorry, that is not correct.]]></CONTENT> </OUTCOME> </QUESTION>