在 formstack 表单中,我需要能够将列表作为参数传递给表单,并从该列表中创建用户可以选择的复选框或下拉菜单,并将其保存在 formstack 的数据库中并像所有其他一样发送到集成字段。这是我想发送的示例:
http://theformurl?list=option1,option2,option3,option4
由此,我尝试在页眉、页脚或嵌入代码中的任何一个(或两者的混合)中使用代码插入来在加载时创建一个看起来和行为与所有其他字段一样的新字段。
我一直在修补 Jenna Molby 使用此处找到的 url 参数动态修改 html 的方法:
https://jennamolby.com/tutorial-examples/dynamic-content-based-on-a-url-parameter-example/
但到目前为止还没有运气。目前,我还没有成功地让动态文本填充到表单中,更不用说一个表单域,然后与 formstack 的后端对话。
这是可行的,如果是这样,任何人都可以推荐一种方法或线程来解决这个问题吗?
- 更新
多亏了 Eric 的建议,我才走到了一半。页脚中的这段代码可以通过 id 占用您已经在表单中插入的复选框。它将用您在 url 中发送的值替换该复选框。但是当您提交时,选择不会被 Formstack 捕获。
<script>
document.addEventListener("DOMContentLoaded", function(event) {
var url = new URL(window.location.href);
//Put field number in var fieldNumber
var fieldNumber = "12345678";
//Put the parameter you're searching for in var param
var param = "parameter name";
//if you want a prefix before your values in the checkbox, use prefix
var prefix = "Prefix ";
//Put the question you want to ask here.
var theQuestion = "Which of the values that came through the url will you select?";
//What should the single checkbox say if no parameters are passed?
var theDefaultBox = "No variables were contained in the parameter.";
var theField = "field" + fieldNumber;
var theFieldID = "fsCell"+fieldNumber;
var values = url.searchParams.get(param).split(",");
var theFieldHTMLfront = "";
if (values) {theFieldHTMLfront = "<fieldset id=\"label"+fieldNumber+"\"><legend class=\"fsLabel fsLabelVertical\"><span>"+theQuestion+"</span></legend><div class=\"fieldset-content\"><label class=\"fsOptionLabel vertical\" for=\""+theField+"_1\"><input type=\"checkbox\" id=\""+theField+"_1\" name=\""+theField+"[]\" value=\""+ prefix + values[0] + "\" class=\"fsField vertical\" />"+ prefix + values[0] + "</label>";} else {theFieldHTMLfront = "<fieldset id=\"label"+fieldNumber+"\"><legend class=\"fsLabel fsLabelVertical\"><span>Which values may have observed or have knowledge about this event?</span></legend><div class=\"fieldset-content\"><label class=\"fsOptionLabel vertical\" for=\""+theField+"_1\"><input type=\"checkbox\" id=\""+theField+"_1\" name=\""+theField+"[]\" value=\""+theDefaultBox+"\" class=\"fsField vertical\" />test</label>";}
var theFieldHTMLback = "</div></fieldset>";
for (var i = 1; i < values.length; i++) {
theFieldHTMLfront += "<label class=\"fsOptionLabel vertical\" for=\""+theField+(i+1)+"\"><input type=\"checkbox\" id=\""+theField+(i+1)+"\" name=\""+theField+"[]\" value=\""+prefix+values[i]+"\" class=\"fsField vertical\" />"+ prefix + values[i] + "</label>";
}
var theFieldHTML = theFieldHTMLfront + theFieldHTMLback;
document.getElementById(theFieldID).innerHTML = theFieldHTML;
});
</script>
关于如何让它在提交时与 Formstack 对话的任何想法?