0

我正在容器 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 减去用户输入的值。

4

3 回答 3

0

我不确定如何像其他人一样评论您的帖子,但您使用服务器端的什么语言来促进这一点?是 C#、PHP 还是...

编辑:

我想我以前也遇到过类似的问题。我所做的是对整个页面(所有 html 元素和所有内容)的 AJAX 请求。您将在变量中获取此数据。您必须通过此变量解析您要查找的信息。例如,如果您想要介于两者之间的所有内容,则可以进行一些字符串解析以将其分开。

我并不是说这是一件好事,但如果我理解正确的话,它可能是一个可行的解决方案。

您也可以尝试 http://api.jquery.com/html/ 并在表单或正文的 ID 上使用它。

于 2012-08-01T17:21:02.770 回答
0

因此,您在名为“formContent”的表单元素中有一个 div,并且您想提取该 div 中所有输入的值(可能是 html),但在提交时输入的数量是未知的?它们都是文本区域吗?

尝试使用 jQuery 查找所有适当的区域,但我不确定如何处理这些值。

var value = "";
$("#formContent").children("textarea").each(function(){value += $(this).val()});

编辑:与 OP 讨论后添加更多内容

所以我会添加一个至少包含两列的数据库表:ElementID 和 Value。创建一个检查 ElementID 是否存在的 Web 服务。如果存在,则更新值,否则,插入。

构建时使用此数据填充表单的值。这可能是服务器端的挑战,您可能必须依靠客户端上的多个调用来抓取和填充。

最后,在用户点击提交后,使用我上面展示的类似方法来查找所有输入并对 web 服务执行 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 服务以获取所有数据并相应地更新。

于 2012-08-01T17:26:34.600 回答
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 中输入的值。

感谢所有回复并帮助我指出正确的方向。

于 2012-08-02T18:21:46.367 回答