2016-09-19 59 views
0

我有一個單張地圖2層,當我點擊按鈕「保存」時,點擊打開第二個對話框,它會打開一個對話框,其中一個表單一些informatons發到我數據庫。防止jQuery用戶界面上的按鈕

當我的第一層被選中,我點擊我的「保存」按鈕,它會打開對應我的第一層的對話框。

但是,當選擇了我的第二層,我點擊我的「保存」按鈕,將打開對應於我的第二層的對話框中,還我爲我的第一層之前打開的窗體。

那麼,是否有可能阻止這種形式的開放? 因爲如果我做.dialog('close'),它在表單上不對應,它可以工作,但我們可以看到它打開然後關閉,所以這不太好!

我已經測試過.dialog(「destroy」);和.remove();但它會刪除我在DOM中的對話框,並且以後我無法再打開它們。

所以,這裏是一些代碼:

//Code in the oneachfeature function from my layer1 
 
    
 
$('#save').on('click',function(e){ 
 
var dialog1 = $("#dialog1").dialog({ 
 
          autoOpen: false, 
 
          modal: true, 
 
          show: { 
 
            effect: "blind", 
 
            duration: 500 
 
           }, 
 
          hide: { 
 
            effect: "blind", 
 
            duration: 500 
 
           }, 
 
          close: function(event, ui) { 
 
            //$(this).dialog("destroy"); 
 
            //$(this).dialog("close"); 
 
            //$(this).remove(); 
 
           }, 
 
          height: 400, 
 
          width: 500, 
 
          modal: true, 
 
          position: { 
 
           my: "center center", 
 
           at: "center center", 
 
           of: "#map" 
 
           }, 
 
          buttons: { 
 
          Valider: function() { 
 
              
 
             // Ajax to send informations in the form 
 
    
 
             }, // end of valider 
 
          Annuler: function() { 
 
             dialog1.dialog("close"); 
 
             }, 
 
            }, // end of buttons     
 
           }); // end of dialog 
 
    
 
          dialog1.dialog("open"); 
 

 
          $("#dialog2").dialog('close'); 
 
    
 
         }); // end of save 
 
    
 
    
 
    
 
    
 
//Code in the oneachfeature function from my layer2 
 
    
 
$('#save').on('click',function(e){ 
 
var dialog2 = $("#dialog2").dialog({ 
 
          autoOpen: false, 
 
          modal: true, 
 
          show: { 
 
            effect: "blind", 
 
            duration: 500 
 
           }, 
 
          hide: { 
 
            effect: "blind", 
 
            duration: 500 
 
           }, 
 
          close: function(event, ui) { 
 
            //$(this).dialog("destroy"); 
 
            //$(this).dialog("close"); 
 
            //$(this).remove(); 
 
           }, 
 
          height: 400, 
 
          width: 500, 
 
          modal: true, 
 
          position: { 
 
           my: "center center", 
 
           at: "center center", 
 
           of: "#map" 
 
           }, 
 
          buttons: { 
 
          Valider: function() { 
 
              
 
             // Ajax to send informations in the form 
 
    
 
             }, // end of valider 
 
          Annuler: function() { 
 
             dialog2.dialog("close"); 
 
             }, 
 
            }, // end of buttons     
 
           }); // end of dialog 
 
    
 
          dialog2.dialog("open"); 
 
          
 
          $("#dialog1").dialog('close'); 
 
    
 
         }); // end of save

回答

0

您的兩個按鈕保存,每一層,似乎有相同的ID。安裝「onclick」聽衆時可能會有衝突嗎?所以這種行爲不符合你的期望。 嘗試設置這些按鈕的唯一ID

+0

是的,你說得對,如果我設置了獨特的ID,它的工作原理,但我想只有一個按鈕來做到這一點 – Hippipers

+0

也許你可以嘗試「清理」點擊事件.off()方法:http://api.jquery.com/off/ –

+0

另外,我建議你命名生成對話框的函數,並用參數來分解它。然後用.on()和.off()和命名函數的可讀性應該更好:) –