2015-02-11 302 views
0

我正在開發一個使用Django 1.6的項目。當我點擊「快速上傳」時,彈出一個彈出框,在那裏我將給出文件夾的路徑並說「OK」。但問題是當我點擊「確定」一次然後「功能事件()「被調用4次。在這方面請幫助我。代碼如下所示。Jquery冒泡點擊事件

<input type="hidden" id="name" name="name" value={{name}}> 
<input id="button" onclick="quickupload();" class="css_button" value="Quick Upload"> 

<script> 
function quickupload() 
{ 
    $('div#dialog-confirm').dialog('open'); 
    $("#dialog-confirm").dialog 
    ({ 
     resizable:true, 
     height:150, 
     modal: true, 
     buttons: 
     { 
     "OK": function event() 
     { 
     var session1 = $("#name").val(); 
     var fpath = $("#quick1").val(); 
     listofpath=fpath.split("\\"); 
     finalpath=""; 
     for (i=0;i<listofpath.length;i++) 
     { 
      finalpath=finalpath+listofpath[i]+"@";   
     }   
     console.log(finalpath); 
     window.location.href = "/uploadquick/"+session1+"/"+finalpath; 
     }, 
     } 
    }); 
} 
</script> 
+0

你能在最終的處理程'event.stopPropagation'檢查? – 2015-02-11 13:17:21

+0

分享完整的「HTML」。 – 2015-02-11 13:35:29

+0

在這裏檢查,http://jsfiddle.net/codeSpy/pxgodr47/。這被稱爲單一時間。 – 2015-02-11 13:40:37

回答

0

您每次撥打quickupload()時都會創建對話框對象。因此,每次單擊該按鈕時,您在對話框定義中傳遞給OK的相同處理程序會一次又一次附加到OK按鈕上。相反之外創建一個對話框對象,然後就可以了,你打開按鈕,點擊這樣

<script> 
// create the dialog object outside 
$("#dialog-confirm").dialog({ 
     resizable:true, 
     height:150, 
     modal: true, 
     buttons: 
     { 
     "OK": function event() 
     { 
     var session1 = $("#name").val(); 
     var fpath = $("#quick1").val(); 
     listofpath=fpath.split("\\"); 
     finalpath=""; 
     for (i=0;i<listofpath.length;i++) 
     { 
      finalpath=finalpath+listofpath[i]+"@";   
     }   
     console.log(finalpath); 
     window.location.href = "/uploadquick/"+session1+"/"+finalpath; 
     }, 
     } 
    }); 

function quickupload() { 
    $('#dialog-confirm').dialog('open'); 
} 
</script> 

希望這有助於:)

+0

我不想在頁面加載時加載彈出窗口,但是我想通過點擊按鈕加載它。我怎樣才能做到這一點? – akki5256 2015-02-12 05:22:52

+0

就是這樣。我們只是創建對話框,但沒有顯示它。我們只需在'quickUpload()'中單擊打開對話框。再次看看代碼:-) – Arkantos 2015-02-12 07:58:19