<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.catglobe.com/index.php?action=history&amp;feed=atom&amp;title=Drag_and_drop_answer_option_values</id>
	<title>Drag and drop answer option values - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.catglobe.com/index.php?action=history&amp;feed=atom&amp;title=Drag_and_drop_answer_option_values"/>
	<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Drag_and_drop_answer_option_values&amp;action=history"/>
	<updated>2026-05-01T10:13:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Drag_and_drop_answer_option_values&amp;diff=23826&amp;oldid=prev</id>
		<title>Cg loc at 08:32, 3 February 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Drag_and_drop_answer_option_values&amp;diff=23826&amp;oldid=prev"/>
		<updated>2012-02-03T08:32:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:32, 3 February 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l181&quot;&gt;Line 181:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 181:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Source  ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Questionnaire Resource Id on cg.catglobe.com site: 164079 (Question: Q4_Drag_and_drop_answer_option_values)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-2246:rev-23826:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Cg loc</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Drag_and_drop_answer_option_values&amp;diff=2246&amp;oldid=prev</id>
		<title>Catglobe: New page: == Challenge  ==  In order to be more flexible in displaying questions  As a questionnaire creator   I want to drag and drop elements in a pre-defined lists to use as question&#039;s answers   ...</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Drag_and_drop_answer_option_values&amp;diff=2246&amp;oldid=prev"/>
		<updated>2009-01-08T02:14:01Z</updated>

		<summary type="html">&lt;p&gt;New page: == Challenge  ==  In order to be more flexible in displaying questions  As a questionnaire creator   I want to drag and drop elements in a pre-defined lists to use as question&amp;#039;s answers   ...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Challenge  ==&lt;br /&gt;
&lt;br /&gt;
In order to be more flexible in displaying questions&lt;br /&gt;
&lt;br /&gt;
As a questionnaire creator &lt;br /&gt;
&lt;br /&gt;
I want to drag and drop elements in a pre-defined lists to use as question&amp;#039;s answers &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
I want to drag products in left list to textboxes in right list, and have the ability of changing my choices by clicking a Remove link &lt;br /&gt;
&lt;br /&gt;
[[Image:QuestionTips DragNDrop 1.jpg]] &lt;br /&gt;
&lt;br /&gt;
[[Image:QuestionTips DragNDrop 2.jpg]] &lt;br /&gt;
&lt;br /&gt;
[[Image:QuestionTips DragNDrop 3.jpg]]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
*Create a text grid question&lt;br /&gt;
*Add a column containing the products to the left of the sub question text column, make the text draggable&lt;br /&gt;
*Make an extra space column between product column and sub question text column&lt;br /&gt;
*Add a column containing Remove links to the right of the sub question text column&lt;br /&gt;
*Make textboxes droppable&lt;br /&gt;
*Hide the product in the left grid when it is dropped in the text box, the previous product in the textbox will be shown again in the left list&lt;br /&gt;
*Clicking Remove will clear the textbox in the same row and show the corresponding product in the left list&lt;br /&gt;
&lt;br /&gt;
== Code  ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
quest.onInit = function()&lt;br /&gt;
{&lt;br /&gt;
	this.initializeLeftList();&lt;br /&gt;
	&lt;br /&gt;
	//add Remove link after text boxes&lt;br /&gt;
	$(&amp;quot;input:text&amp;quot;).each(&lt;br /&gt;
		function(i)&lt;br /&gt;
		{&lt;br /&gt;
			$(this).parent().after(&lt;br /&gt;
				$(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;)&lt;br /&gt;
					.append($(&amp;quot;&amp;lt;a href=\&amp;quot;javascript:quest.clearAnswer(&amp;quot;+i+&amp;quot;);\&amp;quot;&amp;gt;Remove&amp;lt;/a&amp;gt;&amp;quot;))&lt;br /&gt;
					.addClass(&amp;quot;grid_subquestion_text grid_subquestion_odd&amp;quot;)&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
	//configure the drag move&lt;br /&gt;
	$(&amp;quot;.draggable_text&amp;quot;).draggable&lt;br /&gt;
	(&lt;br /&gt;
		{&lt;br /&gt;
			mouse: &amp;quot;pointer&amp;quot;,&lt;br /&gt;
			helper: &amp;#039;clone&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
	//make the textboxes droppable and not editable	&lt;br /&gt;
	$(&amp;quot;input:text&amp;quot;).each(&lt;br /&gt;
		function(i)&lt;br /&gt;
		{&lt;br /&gt;
			$(this).addClass(&amp;quot;droppable_cell&amp;quot;);&lt;br /&gt;
			$(this)[0].contentEditable = false;&lt;br /&gt;
			$(this).width(&amp;quot;300px&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	//drop function&lt;br /&gt;
	$(&amp;quot;.droppable_cell&amp;quot;).droppable&lt;br /&gt;
	(&lt;br /&gt;
		{&lt;br /&gt;
			accept: &amp;quot;.draggable_text&amp;quot;,&lt;br /&gt;
			activeClass: &amp;#039;droppable-active&amp;#039;,&lt;br /&gt;
			hoverClass: &amp;#039;droppable-hover&amp;#039;,&lt;br /&gt;
			drop: function(ev, ui) &lt;br /&gt;
			{		&lt;br /&gt;
				var currentValue = $(this).val();&lt;br /&gt;
				var newValue = ui.draggable.text();&lt;br /&gt;
				if (currentValue != &amp;quot;&amp;quot; &amp;amp;&amp;amp; currentValue != newValue)&lt;br /&gt;
				{&lt;br /&gt;
					quest.showProduct(currentValue);	&lt;br /&gt;
				}&lt;br /&gt;
				$(this).val(ui.draggable.text());	&lt;br /&gt;
				ui.draggable._hide(&amp;quot;fast&amp;quot;);				&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	);	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quest.initializeLeftList = function()&lt;br /&gt;
{&lt;br /&gt;
	var n = this.questions.length;&lt;br /&gt;
	var answers = this.getAnswers();&lt;br /&gt;
	&lt;br /&gt;
	var products = new Array();&lt;br /&gt;
	products[0] = &amp;quot;{{Brands[0]}}&amp;quot;;&lt;br /&gt;
	products[1] = &amp;quot;{{Brands[1]}}&amp;quot;;&lt;br /&gt;
	products[2] = &amp;quot;{{Brands[2]}}&amp;quot;;&lt;br /&gt;
	products[3] = &amp;quot;{{Brands[3]}}&amp;quot;;&lt;br /&gt;
	products[4] = &amp;quot;{{Brands[4]}}&amp;quot;;	&lt;br /&gt;
	&lt;br /&gt;
	//add a product cell before the sub question text cell&lt;br /&gt;
	&lt;br /&gt;
	for(var i=0; i&amp;lt;n; i++)&lt;br /&gt;
	{		&lt;br /&gt;
		var v = products[i];&lt;br /&gt;
		$(&amp;quot;#grid_subquestion_text_&amp;quot; + (i+1))&lt;br /&gt;
			.before(&lt;br /&gt;
					$(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;).append(&lt;br /&gt;
						$(&amp;quot;&amp;lt;div&amp;gt;&amp;quot;)					&lt;br /&gt;
							.append(&lt;br /&gt;
								$(&amp;quot;&amp;lt;p&amp;gt;&amp;quot;).text(v)&lt;br /&gt;
									.addClass(&amp;quot;draggable_text&amp;quot;)&lt;br /&gt;
									.css(&amp;quot;mouse&amp;quot;, &amp;quot;pointer&amp;quot;)&lt;br /&gt;
							)						&lt;br /&gt;
					)&lt;br /&gt;
					.width(&amp;quot;200px&amp;quot;)&lt;br /&gt;
			)			&lt;br /&gt;
			.width(&amp;quot;10px&amp;quot;);				&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	$(&amp;quot;#grid_subquestion_text_1&amp;quot;)&lt;br /&gt;
	.before(&lt;br /&gt;
		$(&amp;quot;&amp;lt;td rowspan=\&amp;quot;&amp;quot;+(n + 1)+&amp;quot;\&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;quot;)&lt;br /&gt;
			.addClass(&amp;quot;grid_space_cell&amp;quot;)&lt;br /&gt;
			.width(&amp;quot;200px&amp;quot;)&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
	$(&amp;quot;.draggable_text&amp;quot;).each(&lt;br /&gt;
		function(i)&lt;br /&gt;
		{&lt;br /&gt;
			if (answers.exists($(this).text()))&lt;br /&gt;
				$(this)._hide(&amp;quot;fast&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	);	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//get list of answered value&lt;br /&gt;
quest.getAnswers = function()&lt;br /&gt;
{&lt;br /&gt;
	var a = new Array();&lt;br /&gt;
	a[0] = &amp;quot;{{Q7[0]}}&amp;quot;;&lt;br /&gt;
	a[1] = &amp;quot;{{Q7[1]}}&amp;quot;;&lt;br /&gt;
	a[2] = &amp;quot;{{Q7[2]}}&amp;quot;;&lt;br /&gt;
	a[3] = &amp;quot;{{Q7[3]}}&amp;quot;;&lt;br /&gt;
	a[4] = &amp;quot;{{Q7[4]}}&amp;quot;;	&lt;br /&gt;
	return a;	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//check if a value exists in an array&lt;br /&gt;
Array.prototype.exists = function(value)&lt;br /&gt;
{&lt;br /&gt;
	for(var i=0; i&amp;lt;this.length; i++)&lt;br /&gt;
	{&lt;br /&gt;
		if (this[i] == value)&lt;br /&gt;
			return true;&lt;br /&gt;
	}&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//show a product in the left list&lt;br /&gt;
quest.showProduct = function(value)&lt;br /&gt;
{&lt;br /&gt;
	$(&amp;quot;.draggable_text&amp;quot;).each(&lt;br /&gt;
		function(i)&lt;br /&gt;
		{&lt;br /&gt;
			if ($(this).text() == value)&lt;br /&gt;
				$(this).show();&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//remove a product from the right list and put back in the left list&lt;br /&gt;
quest.clearAnswer = function(index)&lt;br /&gt;
{&lt;br /&gt;
	var input = $(&amp;quot;input:text&amp;quot;)[index];&lt;br /&gt;
	var value = input.value;&lt;br /&gt;
	if (value != &amp;quot;&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		this.showProduct(value);&lt;br /&gt;
		input.value = &amp;quot;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Catglobe</name></author>
	</entry>
</feed>