获取DIV中的所有内容,包括输入选择器的标记值

时间:2012-08-01 16:57:22

标签: jquery

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

3 个答案:

答案 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中输入的值。

感谢所有回应并帮助我指明正确方向的人。