Last active
December 16, 2015 23:39
-
-
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"
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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