我在容器div中加载一个html表单。此html是从数据库中检索的模板。然后使用填写表格(或表格的一部分)。
用户完成后,会选择一个调用函数的按钮。
function submitForm() {
var workflowID = $('#workFlowID').val();
var formID = $('#formID').val();
var uploadedFiles = $('#uploadedFiles').val();
var htm = $('#formContent').html();
console.log(htm);
alert(workflowID + ", " + formID + ", " + uploadedFiles + ", : " + htm);
}
问题是我得到忠实再现的表单,但输入字段不包含在生成的“htm”中我需要能够重现html,因为它已经填写以保存到新表中。我错过了什么,或者这甚至可能?
被要求提供更多信息;这是一个例子,html可能有10个输入区域。填写完适当的输入后,表单将保存,供其他人查看并添加。填写表单时,上面的参考代码会拉回html减去用户输入的值。
答案 0 :(得分:0)
我不确定如何像其他人那样对你的帖子发表评论,但是你使用服务器端来促进这一点的语言是什么?是C#,PHP还是......
编辑:
我想我之前遇到过类似的问题。我所做的是对ENTIRE页面的AJAX请求(所有html元素和所有内容)。您将把这些数据放回变量中。您必须通过此变量解析您要查找的信息。例如,如果你想要介于两者之间的所有东西,你可以做一些字符串解析来分离它。
我并不是说这是一件好事,但如果我理解正确,它可能是一个可行的解决方案。
您也可以尝试一下 http://api.jquery.com/html/ 并将其用于表单或正文的ID。
答案 1 :(得分:0)
所以你在一个名为“formContent”的表单元素中有一个div,你想要提取该div中所有输入的值(可能是html),但是在提交时输入的数量是未知的?它们都是textareas吗?
尝试使用jQuery查找所有适当的区域,但我不确定如何处理这些值。
var value = "";
$("#formContent").children("textarea").each(function(){value += $(this).val()});
编辑:与OP讨论后添加更多
所以我会添加一个至少包含两列的数据库表:ElementID和Value。创建一个检查ElementID是否存在的Web服务。如果存在,则更新值,否则,插入。
使用此数据在构建时填充表单的值。这可能是服务器方面的挑战,您可能不得不依赖客户端上的多个调用来抓取和填充。
最后,在用户点击提交后,使用我在上面显示的类似方法查找所有输入并对webservice执行ajax调用,提交元素的id及其值。像这样:
$("#formContent").find("input", "select", "textarea").each(
function()
{
var elementId = $(this).attr("id");
var value = $(this).val();
//perform ajax call to webservice with elementId and value parameters
}
);
请记住,每个elementId都需要是唯一的,这可能会导致多个HTTP请求。否则,您可能希望一次性将一些可解析数据发送到Web服务以获取所有数据并进行相应更新。
答案 2 :(得分:0)
我找到了答案,概念是遍历每个标签并设置属性。
$("input").each(function () {
if ($(this).is(':text')) { $(this).attr("value", $(this).val()); }
else if ($(this).is(':checkbox')) {
if ($(this).is(':checked')) {
$(this).attr('checked', 'checked');
}
else {
$(this).removeAttr('checked');
}
if ($(this).is("textarea")) {
$(this).text($(this).val());
}
if ($(this).is(':radio')) {
if ($(this).is(':checked')) {
$(this).attr('checked', 'checked');
}
else {
$(this).removeAttr('checked');
}
}
然后我可以回去做我试图做的事情:
var htm = $('#formContent').html();
这将包括在html中输入的值。
感谢所有回应并帮助我指明正确方向的人。