2012-04-20 88 views
2

我正在使用asp.net web應用程序上的引導組件。 它工作正常,但好奇的是,他們在頁面回傳後停止工作。外觀很好,但行爲不是。這就是爲什麼我認爲問題涉及的JavaScript文件。Javascripts not post after postback

例如,一個dorp down按鈕:在回發後,展開操作不起作用。

你知道這可能是什麼原因嗎?

+0

您是否檢查了javascript控制檯以查看是否有任何javascript錯誤?這是我看的第一個地方。 – 2012-04-20 00:27:18

+0

Hi @Dan Herman!沒有錯誤。非常感謝你! – 2012-04-20 00:55:01

回答

19

如果您使用UpdatePanel進行部分頁面刷新,那麼當通過AJAX更新面板的內容時,通常的$(document).ready(...)/$(...)東西不會再次觸發,這意味着自定義JS功能(如下拉菜單)即Bootstrap的一部分不會被重新綁定到新元素。

我最常做的是提取我的代碼,設置了JavaScript的事件處理程序和行爲到自己的功能(例如function BindEvents() { ... }),然後我用更新面板內部下面的代碼,以確保它得到重新運行的局部回傳(以及在初始頁面加載):

<script type="text/javascript"> 
    Sys.Application.add_load(BindEvents); 
</script> 

編輯:這是一個基本的提示功能BindEvents()應該重新初始化的下拉菜單爲您提供:

function BindEvents() { 
    $('[data-toggle=dropdown]').dropdown(); 
    // other bootstrap binding code - see the combined Bootstrap.js for ideas 
} 
+0

非常感謝!我很確定那就是發生了什麼事。正如你所說,我正在使用更新面板。但是,究竟在函數BindEvents(){...}上設置了javascripts事件處理函數呢? – 2012-04-20 00:54:35

+0

您是否使用任何自定義JavaScript來啓用下拉按鈕行爲,或者您只是在其上設置了'data-toggle =「dropdown」'屬性,該屬性「自動」似乎正常工作? – GregL 2012-04-20 05:39:54

+0

另外,你使用的是最新版本的jQuery和Twitter Bootstrap? – GregL 2012-04-20 05:40:35

1

如果您使用這一行代碼,每次更新面板更新時,endRequestHandler中的任何內容都應該觸發。 ( '下拉菜單,切換'):

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 

     function endRequestHandler(){ 

      // initialize controls here... 

     } 
0

放置在網頁的身體下面解決問題

<script type="text/javascript"> $下拉(); </script>