2013-07-10 46 views
1

我有一系列對應於條目的複選框,以及一個刪除了我已附加了jquery ui模式確認的所有按鈕。這裏撥弄:http://jsfiddle.net/BxdWc/。問題在於,在確認對話框中按下yes之後,它不會提交表單(未由php處理)。 php代碼包含在頁面的頂部,但我相當確定它與此無關,因爲沒有模式代碼進程,並正確刪除檢查的條目。jquery ui確認對話框不起作用

JS:

$(function() { 
    $("#dialog-confirm-multiple").dialog({ 
     autoOpen: false, 
     resizable: false, 
     width: 300, 
     modal: true, 
     show: { 
      effect: "bounce", 
      duration: 100 
     }, 
     hide: "drop", 
     buttons: { 
      "Yes": function() { 
       $("#confirm").submit(); 
       $(this).dialog("close"); 
      }, 
      "No": function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
    $("#doDelete").click(function (e) { 
     e.preventDefault(); 
     $("#dialog-confirm-multiple").dialog('open'); 
     return false; 
    }); 
}); 

HTML:

<form post="self.php" id="confirm"> 
<!-- some inputs .etc --> 
<input name="doDelete" type="submit" id="doDelete" value="Delete" class="btn btn-danger"> 
</form> 
+0

它不提交或不只是'POST'數據? – DevlshOne

+0

不發佈,點擊後頁面重新加載。奇怪的壽,因爲沒有JS,它工作正常 – Alex

回答

3

它看起來像你的PHP檢查按鈕被點擊了其中。當您通過$('#confirm').submit();提交表單時,jQuery不包含按鈕。如果實際點擊按鈕,瀏覽器將僅包含提交中的按鈕。

有幾種方法可以讓按鈕名稱/值對包含在提交中。

您可以使用$('form').serializeArray();,推動doDelete /在this answer

描述刪除對或你也許可以用做這樣的事情就完事了。注意刪除按鈕的點擊被第二次調用。按鈕單擊事件檢查它是否通過觸發器(又名對話框)啓動。第二次,它不會被阻止被提交。

$(function() { 
    $("#dialog-confirm-multiple").dialog({ 
     autoOpen: false, 
     resizable: false, 
     width: 300, 
     modal: true, 
     show: { 
      effect: "bounce", 
      duration: 100 
     }, 
     hide: "drop", 
     buttons: { 
      "Yes": function() { 
       $(this).dialog("close"); 
       $("#doDelete").click(); 
      }, 
      "No": function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
    $("#doDelete").click(function (e,ui) { 
     if(e.originalEvent) { 
      e.preventDefault(); 
      $("#dialog-confirm-multiple").dialog('open'); 
      return false; 
     } 
    }); 
}); 

的小提琴是here

+1

像一個魅力工作!謝謝;) – Alex

+1

看來,jQuery的'isTrigger' [沒有準備好黃金時間](https://github.com/jquery/api.jquery.com/issues/319)。如果你用'e.originalEvent'替換'!e.isTrigger',我認爲這仍然有效。 –

+0

好抓!我更新了片段和小提琴,以使用originalEvent而不是isTrigger。謝謝! – Gordolio

0

我修改這一點,這樣,當你表示一個類,而不是一個ID確認按鈕它可以工作。我是一個JavaScript新手,所以要小心!隨意改善這一點。

$(function() { 
    $("input.doDelete").click(function (e,ui) { 
     var button = $(e.target); 
     $("#dialog-confirm-multiple").dialog({ 
      autoOpen: false, 
      resizable: false, 
      width: 300, 
      modal: true, 
      show: { 
       effect: "bounce", 
       duration: 100 
      }, 
      hide: "drop", 
      buttons: { 
       "Yes": function() { 
        $(this).dialog("close"); 
        button.click(); 
       }, 
       "No": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
     if(e.originalEvent) { 
      e.preventDefault(); 
      $("#dialog-confirm-multiple").dialog('open'); 
      return false; 
     } 
    }); 
});