Home › Forums › Classic DFFS › Shuffle options in a choice field
- This topic has 0 replies, 1 voice, and was last updated 4 years, 7 months ago by Alexander Bautz.
-
AuthorPosts
-
-
April 19, 2020 at 07:55 #29531
I got ta question on how to shuffle the options in a choice column. I found a code snippet for shuffling an array here: https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array
Include this snippet in your Custom JS:
function shuffle(array) { var currentIndex = array.length, temporaryValue, randomIndex; // While there remain elements to shuffle... while (0 !== currentIndex) { // Pick a remaining element... randomIndex = Math.floor(Math.random() * currentIndex); currentIndex -= 1; // And swap it with the current element. temporaryValue = array[currentIndex]; array[currentIndex] = array[randomIndex]; array[randomIndex] = temporaryValue; } return array; }
The examples below uses a field named “ChoiceColumn1” – replace this with the internal name of your field.
Use this approach when NOT using the Misc tab option Multiple-choice columns (checkboxes and radio buttons) in multiple columns
var table = jQuery("#dffs_ChoiceColumn1 table"); var rows = jQuery(table).find("tr"); var shuffled = shuffle(rows); jQuery(table).html(shuffled);
Use this approach when using the Misc tab option Multiple-choice columns (checkboxes and radio buttons) in multiple columns
var rows = jQuery("#dffs_ChoiceColumn1 .dffs_tr_multicolumn"); jQuery.each(rows, function(i, row){ var cells = jQuery(row).find("td"); var shuffled = shuffle(cells); jQuery(row).html(shuffled); });
If you use side-by-side for this field you must run the code on every click of the tab and must wrap the code in a function like this:
function callMeFromTab(){ // Add code snippet from above here }
Then insert callMeFromTab in the Click function name input in the tab configuration.
Alexander
- This topic was modified 4 years, 7 months ago by Alexander Bautz. Reason: Added code for SBS
-
-
AuthorPosts
- You must be logged in to reply to this topic.