Skip to content

Instantly share code, notes, and snippets.

@NullVoxPopuli
Last active December 16, 2015 23:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NullVoxPopuli/5515485 to your computer and use it in GitHub Desktop.
Save NullVoxPopuli/5515485 to your computer and use it in GitHub Desktop.
Javascript for prefilling a formstack form for inputs, textareas, radio buttons, checkboxes, dropdowns... just missing date and time, cause those are multiple selects for one "field"
var submission_data = JSON.parse("<%=j(@submission_data[:data].to_json) %>")
var i, field_data, field;
for(i = 0; i < submission_data.length; i++){
field_data = submission_data[i];
// this takes care of inputs, cehckboxes, radios, and textareas
field = $j("[name*=field" + field_data.field + "]" );
if (field.length == 1 && field.length != 0){
if (field[0].nodeName == "INPUT"){
// regular input
field.val(field_data.value);
} else if (field[0].nodeName == "TEXTAREA"){
// text area
field.html(field_data.value);
} else {
// select
options = field.find("option");
$j.each(options, function(index, element){
var self = $j(element);
if (field_data.value.indexOf(self.html()) > -1){
self.attr("selected", true);
}
});
}
} else {
if ($j(field[0]).attr("type") == "checkbox"){
// checkbox
// options separated by new line character
$j.each(field, function(index, element){
var self = $j(element);
if (field_data.value.indexOf(self.attr("value")) > -1){
self.prop("checked", true);
}
});
} else if ($j(field[0]).attr("type") == "radio") {
//radio
// option is seleceted by the text of the option
$j.each(field, function(index, element){
var self = $j(element);
if(field_data.value.indexOf(self.attr("value")) > -1){
self.prop("checked", true);
}
});
} else if (field.length == 4 && field[1].nodeName == "SELECT"){
// date
options = field.find("option");
var d = new Date(field_data.value);
// day
var day = d.getDate();
// month
var month = d.getMonth();
// year
var year = d.getFullYear();
$j.each(field, function(index, element){
var self = $j(element);
var options = self.find("option");
if (self.attr("name").indexOf("M") > -1){
self.find("option:eq(" + (month + 1) + ")").attr("selected", true);
} else if (self.attr("name").indexOf("D") > -1){
$j.each(options, function(index, e){
var self = $j(e);
if (String(day) === self.attr("value")){
self.attr("selected", true);
}
});
} else if (self.attr("name").indexOf("Y") > -1){
$j.each(options, function(index, e){
var self = $j(e);
if (String(year) == self.attr("value")){
self.attr("selected", true);
}
});
}
});
} else {
console.log(field);
console.log(field.length)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment