保留客户端HTML标记并在回发后保留

时间:2016-10-27 02:47:43

标签: javascript jquery html

我正在构建一个用户搜索过滤器,我们可以在其中指定一些标准,每个HTML表格一行。

我正在客户端使用jquery构建一个动态表,该表在页面加载时以一行(默认)开始,使用&#34; +&#34;最后一个<td>上的图像,当我点击它时,我会向表中添加一个新行,这可以重复任意数量的行,如下所示。单击搜索按钮后,我将根据所选标准返回结果。但是我还需要在回发后保留当前的条件表(由于搜索按钮)。

The Dynamic Table image

关于如何做到这一点的任何想法?我已经尝试将表的所有HTML放在一个隐藏字段中,但出于明显的安全原因,我得到了一个RequestValidationError。我在隐藏变量中保存的每行中都有各个选定的值,我在后面的代码中使用它来构建搜索并带来结果,我是否需要使用我拥有的值在客户端重建表?这是唯一的选择吗?我也尝试将表格的HTML转换成文本并将其放入隐藏变量中,但我无法在回发后将其转换回HTML,它在表格中呈现为文本,下面是代码,任何感谢帮助/输入。

HTML:

<input type="hidden" runat="server" value="0" id="hdnCriteriaTable" />

jQuery的:

按钮点击,回发前(客户端):

jQuery("[id*=hdnCriteriaTable]").val(jQuery("#dynamicCriteriaTable tbody").html().replace(/</g, "&lt;").replace(/>/g, "&gt;"));

在回发后的页面加载(客户端):

    if (jQuery("[id*=hdnispostback]").val() == "1")
    {
//commented out lines below are different ways I tried to make it work.
//the one with hardcoded td's is the one that renders perfectly as HTML inside the table
        jQuery("#dynamicCriteriaTable>tbody").empty();
        var criteriaTableHTML = jQuery("[id*=hdnCriteriaTable]").val().replace("&amp;lt;", /</g).replace("&amp;gt;", />/g).replace("&quot;", "\"");
        jQuery.parseHTML(criteriaTableHTML);
        //jQuery("#dynamicCriteriaTable>tbody").append(jQuery("[id*=hdnCriteriaTable]").val().replace("&amp;lt;", /</g).replace("&amp;gt;", />/g).replace("&quot;", "\"").toHtml());
        //jQuery("#dynamicCriteriaTable>tbody").append("<tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td></tr>")
        jQuery("#dynamicCriteriaTable>tbody").append(criteriaTableHTML);
        //alert(jQuery("#dynamicCriteriaTable").html());
        //jQuery("#dynamicCriteriaTable").toHtml();
    }

这就是在表格中呈现HTML的方式:

Rendered HTML image

1 个答案:

答案 0 :(得分:2)

如果我是你,我会从价值观重建表格;它很干净,你总是可以编写一个自动构建的功能。

但是,如果你想将它作为HTML传递给 in toto ,那么你需要以某种方式转义你的标签。我首先将<>分别替换为&lt;&gt;,如果仍然给您一个requestValidationError,请使用另一对分隔符。