Django newbie - нужна помощь, чтобы скрыть части стола, который построен динамически - PullRequest
0 голосов
/ 18 января 2012

Мне нужно скрыть / показать части таблицы, которая создается динамически, как показано ниже. Я хочу показать или скрыть таблицу с class = "newtable", если флажок не установлен. Однако я хочу скрыть только тот экземпляр, который соответствует этой итерации цикла. Поэтому, если флажок установлен, пользователь видит дополнительную информацию и должен ее заполнить. Если нет, он не видит ее и не предпринимает никаких дальнейших действий. Эта логика будет применяться для каждой строки таблицы. Я вижу, как использовать javascript, чтобы скрыть ВСЕ экземпляры «newtable», но я хочу скрыть только те, которые соответствуют «checkbox». Любая помощь с благодарностью.

Кстати, мне пришлось долго строить эту «форму», потому что мои переменные берутся из разных моделей. Не удалось найти способ использовать форму Django, форму модели или набор форм для выполнения. Спасибо!

<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 Ответ

1 голос
/ 18 января 2012

Вы можете легко скрыть все отмеченные флажки под таблицей .newtable, используя jQuery.

<!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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...