隐藏元素因此他们不会发布数据

时间:2013-10-28 17:47:20

标签: javascript jquery html

我有一个包含多个表的表单,每个表中都有许多输入字段。

在每张桌子上方,我有一个<h2>,我这样做:

$retVal .= "<h2><input value='{$category}' type='checkbox' name='Categories[]' onclick='CheckboxCategory($category);'  checked='checked' />&nbsp;" . $MSCategories[$i] ."</h2>";

// below this is table
$retVal .= "<table id=\"tableId{$category}\" class=\"search_table\" style='border-spacing: 0px;'>\n";
// edited out 
$retVal .= "</table>";

我们的想法是,如果他们选中此框(在<h2>中),则会运行此脚本:

function CheckboxCategory(catUniqueKey) {
    // jQuery
    if ($("#tableId" + catUniqueKey).is(":visible")) {
        $("#tableId" + catUniqueKey).hide();
    } else {
        $("#tableId" + catUniqueKey).show();
    }
}

我想隐藏这个特定的表,以便它不会发布任何值(而不是用户下去和取消选中几十个框)。这个顶级复选框我想照顾它。

但显然,如果选中了复选框,则当表格被隐藏时,它仍会发布该值。

除了hide之外我还能做些什么来实际删除表格中这部分的痕迹吗?

2 个答案:

答案 0 :(得分:1)

我认为如果你将元素与隐藏一起禁用它就可以了。

答案 1 :(得分:1)

hidden元素将发布到服务器,但disabled将不会发布,因此您必须禁用元素

试试这个

function CheckboxCategory(catUniqueKey) {
    // jQuery
    if ($("#tableId" + catUniqueKey).is(":visible")) {
        $("#tableId" + catUniqueKey).hide();
        $("#tableId" + catUniqueKey).prop('disabled',true);
    } else {
        $("#tableId" + catUniqueKey).show();
        $("#tableId" + catUniqueKey).prop('disabled',false);
    }
}