确认django模板中的多个按钮

时间:2014-01-12 16:08:11

标签: javascript jquery python django

在我的django模板中,我有一段代码如下:

{% block b %}
    { % for foo in foos %}
        { % if foo.some_variable % }            
            <form method="LINK" action="{% url "some_view" foo.id %}" id="button">
            <input type="submit" value="Button"/></form>
        { % else % }
            <form method="LINK" action="{% url "some_view1" foo.id %}" id="button">
            <input type="submit" value="Button1"/></form>  
            <form method="LINK" action="{% url "some_view2" foo.id %}" id="button">
            <input type="submit" value="Button2"/></form>      
        { % endif %}
        <br>
     { % endfor %}
{% endblock % }

我需要为所有这些按钮进行确认弹出。所以我试着添加

onclick = "return confirm("are u sure?")"

它有效,但它很难看。我想添加自定义按钮名称,标题等。 所以我读到这在清晰的javascript中是不可能的,我应该使用jquery。

我尝试过类似的东西,但由于我不知道jquery既不是js也不行:

<script>
    function confirmAction(){
        var confirmed ; 
        $( "#dialog-confirm" ).dialog({
            resizable: false,
            height:140,
            modal: true,
            buttons: {
                "Yes": function() {
                    confirmed = true;
                    $( this ).dialog( "close" );

                },

                "No": function() {
                    confirmed = false;
                    $( this ).dialog( "close" );

                }
            }
        });
        return confirmed
    }
</script>

<div id="dialog-confirm" title="Are you sure??">
    <p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>
        Are you sure you want to do this?</p>
</div>

当我点击按钮时,会出现弹出窗口,但它突然消失,无论如何我都会被重定向到视图。

你可以试着帮助我吗? 最好的问候,

2 个答案:

答案 0 :(得分:0)

确认总是假的,因为javascript是asynchrone。

你需要使用一些闭包。这样的事情可以解决问题:

    $('input:submit').click(function() {
        // get form associated with the button
        var form = $(this).parents('form')
        $( "#dialog-confirm" ).dialog({
            resizable: false,
            height:140,
            modal: true,
            buttons: {
                "Yes": function() {
                    $( this ).dialog( "close" );
                    // maybe set an hidden field to keep button value if needed
                    form.submit()
                },

                "No": function() {
                    $( this ).dialog( "close" );
                }
            }
        });
        return false;
    }

答案 1 :(得分:0)

另一个问题是我在我的网站上也有这样设计的其他按钮(表单,提交) 但是我已经使用了这段代码:

<script>
     $('.popup_button').click(function() {
         // get form associated with the button
         var form = $(this)

         $("#dialog-confirm").dialog({
             resizable: false,
             height:200,
             modal: true,
             buttons: {
                 "Yes": function() {
                     $( this ).dialog( "close" );
                     form.submit()
                 },

                 "No": function() {
                    $( this ).dialog( "close" );
                 }
             }
         });
         return false;
     });
</script>

<div id="dialog-confirm" title="Confirmation" style='display: none'>
    <p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>
        Are you sure?</p>
</div>

因此,只有那些具有“popup_button”类的按钮才会出现确认弹出窗口 我唯一缺少的是如何获得每个按钮的自定义确认消息。

当我替换

$("#dialog-confirm").dialog

$(".new_button_class").dialog

然后将class ='new_button_class'和'title'属性添加到我的按钮表单中,奇怪的事情发生了。更重要的是,我现在不知道如何以这种方式设置对话框消息。

添加

$(".new_button_class", form).dialog
而不是导致弹出窗口根本不显示。

如何解决?