Django新手 - 需要帮助隐藏动态构建的表的部分

时间:2012-01-18 18:23:03

标签: javascript django django-templates

我需要隐藏/显示动态构建的表的部分,如下所示。如果未选中“复选框”,我想用class =“newtable”显示或隐藏表格。但是,我只想隐藏与循环迭代相对应的实例。因此,如果选中该复选框,则用户会看到额外的信息并且必须填写它。如果没有,他们就看不到它并且没有进一步的操作。该逻辑将应用于表的每一行。我可以看到如何使用javascript来隐藏“newtable”的所有实例,但我只想隐藏那些与被检查的“复选框”相对应的实例。非常感谢任何帮助。

顺便说一句,我必须长期构建这个“形式”,因为我的变量来自不同的模型。无法看到任何方式使用django表单,模型表单或formset来完成。谢谢!

<table>
<tr>
{% for x,y,z in stuff%}
    <td>{{ x.foo }}</td>
    <td>{% for item in y %}
        <input type="checkbox" name="stuff.{{ item.id }}" class="item" value="True" checked/> {{ item }}<br />        
    {%  endfor %}
    </td>
    </tr>
    <tr><td align=center colspan="5">
    <table class="newtable"  border=1>
    <tr><td>
    <input type="radio" name="pref_id{{ z.id }}"  value="1" checked> blah<br>

{%  endfor %}
</td>
</tr>
</table>
</tr>
    {% endfor %}

</table>

1 个答案:

答案 0 :(得分:1)

您可以使用jQuery轻松隐藏表格.newtable下的所有选中复选框。

<!DOCTYPE html>
<html>
<head>
   <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">
   </script>
    <script type="text/javascript">
        $(document).ready(function() {
            $(".newtable input[type=checkbox]:checked").hide();
        });
    </script>
</head>
<body>
    <table class="newtable">
        <tr><td><input type="checkbox" checked/></tr>
        <tr><td><input type="checkbox"></tr>
    </table>
</body>

如果你宁愿隐藏整行,你可以使用

$(".newtable input[type=checkbox]:checked").parent().parent().hide()

或者你可以在生成表单时隐藏它们,假设你要设置一些复选框来检查取决于item.checked

{% if item.checked %}
    <input type="checkbox" checked style="display:none" ..../>      
{% else %}
    <input type="checkbox"  ..../>      
{% endif %}