Django: хотите удалить элемент с флажком - PullRequest
0 голосов
/ 28 января 2011

У меня есть шаблон, который отображает список предметов. Он имеет один флажок для каждого элемента. Я хочу иметь возможность удалить элемент из флажка, если флажок установлен. Поэтому мне нужна кнопка, которая удаляет элемент после того, как флажок установлен. Вот мой шаблон. Извиняюсь за огромный шаблон.

{% extends "base_popup.html" %}


{% block title %}
      {{title}}
{% endblock %}

{% block script %}

                <script type="text/javascript" src="{{MEDIA_URL}}ui/ui.datepicker.min.js"></script>
                <script type="text/javascript">
                        $(function(){
                                $("#id_required_date").datepicker({dateFormat:"dd/mm/yy"});
                                $(":checkbox").css("width","auto");
                        });
                        $(function(){
                                $("#check_all").click(function(){
                                        if(this.checked ==true)
                                                        $("tbody :checkbox").each(function(){
                                                                this.checked=true;
                                                        });
                                                else
                                                        $("tbody :checkbox").each(function(){
                                                                this.checked=false;
                                                        });
                                });
                        });
                </script>
                {% endblock %}
                {% block content %}
                                <div id="location_header">{{title}}</div>
                <div id="form_container">
                <form action="." method="post">
                        <fieldset class="model">

                                <p>
                                        <span style="font-weight:bold;font-size:14px">Contact : {{order.contact}}</span>
                                </p>
                                <p>
                                        <span style="font-weight:bold;font-size:14px">Cost : {{order.cost}}</span>
                                </p>
             {{ form.as_p }}
                    </fieldset>
                    <fieldset class="model">
                            <legend>Items</legend>
                            <table id="items_table">

                                    <thead>
                                            <tr>
                                                    <td><input type="checkbox" id="check_all" checked="checked"></td>
                                                    <td>Tiptop no</td><td>Client no</td><td>Title</td><td>Item type</td>
                                                    <td>Format</td>
                                            </tr>
                                    </thead>
                                    <tbody>
                            {% for item in items %}
                                    <tr>
                                    <td><input type="checkbox" name="item" value="{{item.pk}}" checked="checked"></td>
         <td>{{item.tiptop_id}}</td><td>{{item.alternative_id}}</td><td>{{item.title}}</td>
                                <td>{{item.type}}</td><td>{{item.format}}</td>           

                                </tr>
                        {% endfor %}

                        </tbody>
                        </table>
                        <p>
                                <form method="post" action="help">
                                <table width="60%">
                                        <tr>
                                                <td>
                                                        <select name="contact_id">
                                                        {% for contact in order.contact.client.contact_set.all %}
                                                                <option value="{{contact.pk}}">{{contact}}</option>
         {% endfor %}
                                                    </select>
                                            </td>
                                            <td>
                                                    <select name="status_id">
                                                    {% for status in status_list %}
                                                            <option value="{{status.pk}}">{{status}}</option>
                                                    {% endfor %}
                                                    </select>
                                            </td>
                                            <td><input type="submit" name="save_status" value="set status for selected items"></td>
                                    </tr>
                            </table>
                    </form>
                    </p>
            </fieldset>
    <div id="form_footer">
                    <span style="font-size:10px;font-weight:bold;margin-right:10px">
                    </span>
                    <input type="submit" name="save_item" value="Save" onclick="validate_item(this.form)">
            </div>
    </form>
    </div>
    <input type="button" onclick="window.location.href='{% url tiptop.views.client_items name.pk %}'" value="add_item">

    {% endblock %}

1 Ответ

1 голос
/ 28 января 2011

Я интерпретирую ваш вопрос так, что, по сути, когда флажок установлен, вы хотите удалить эту строку из таблицы.

Вам нужно будет написать страницу, которая принимает идентификатор удаляемого элемента и возвращает значение true или false в зависимости от того, успешно оно или нет.Я бы также посоветовал вам не делать этого при смене флажка.Вы должны добавить кнопку, которая подтверждает, действительно ли пользователь хочет удалить строку или нет, а затем вызвать эту функцию.

Я также предполагаю, что вы используете jQuery 1.3 +.

<script type="text/javascript">
$(function ()
{
    if ($( '#items_table' ).length > 0)
    {
        var table = $( '#items_table' );

        table
            .find( 'tbody input[type=checkbox]' )
            .click(function()
            {
                // Get the ID of the item to delete
                var item_id = $(this).val();

                // Post it to the server
                $.post
                (
                    '/path/to/delete/'+item_id,
                    function(data)
                    {
                        // Assuming the page will return true
                        if( data )
                        {
                            // Remove the table row
                            $(this)
                                .closest('tr')
                                .slideUp()
                                .remove()
                            .end();
                        }
                    }
                );
            })
    }
});
</script>
...