1. 程式人生 > >bootstrap模態框(modal)使用remote方法載入資料,只能載入一次的解決辦法

bootstrap模態框(modal)使用remote方法載入資料,只能載入一次的解決辦法

bootstrap的modal中(關於modal的介紹見:http://www.runoob.com/bootstrap/bootstrap-modal-plugin.html),有一個remote選項,可以動態載入頁面到modal-body中

有兩種方法,一種是使用連結,另一種就是使用指令碼。

1 使用連結

<a href="user/userDetail.jsp" data-toggle="modal" data-target="#myModal">開啟對話方塊</a>

當點選該連線時,userDetail.jsp的內容就可以動態的載入到div.modal-body中。當然這裡的連線也可以是action

2 使用指令碼

[javascript] view plaincopyprint?
  1. $("#myModal").modal({  
  2.     remote: "page.jsp"
  3. });  

但是這樣載入後,會有問題,modal資料只加載一次,如果要載入不同的資料,例如根據id查詢不同物品的詳細資訊,modal的資料是不能更新的,即使傳的id值不同。其實解決辦法很簡單,只需要在載入下次資料前,將之前的載入的資料清除即可。

清除之前載入的資料,讓對話方塊能夠在每次開啟時重新載入頁面

最簡單的方式就是監聽modal的hidden,當modal關閉時,即把資料清除即可:

[javascript] view plaincopyprint?
  1. $("#myModal").on("hidden"function() {  
  2.     $(this).removeData("modal");  
  3. });  

也可以在每次開啟對話方塊之前移除資料,效果是一樣的。

注:上面的程式碼基於 Bootstrap v2,如果使用 Bootstrape v3,模態對話方塊的 HTML 和事件的寫法有一些不同,例如對於上面的 hidden 事件,要寫成:

[javascript] view plaincopyprint?
  1. $("#myModal").on("hidden.bs.modal"
    function() {  
  2.     $(this).removeData("bs.modal");  
  3. });