2012-11-09 31 views
2

我有一個大的.aspx頁面,帶有多個服務器控件。而且,這個.aspx頁面還引用了一個JavaScript文件。我想在這個現有的.js文件中有一個JavaScript函數,在服務器發生任何回發之前,這個函數會被調用。需要從.aspx(VB.net)頁面隨時調用Javascript函數發生回發

[注:我看到在另一個帖子裏提到了如何在JQuery的(How to capture submit event using jQuery in an ASP.NET application?)做到這一點,但我想,要通過現有的JavaScript文件來完成,而不是使用像jQuery新技術]

[編輯] 使用OnSubmit處理程序的解決方案不適用於我......因爲它不會針對由服務器控件觸發的回發調用。

回答

3

你需要的東西是這樣的:

/* 
    usually there is only one form in asp.net, but if you know you can have 
    more than one, you can get main form with document.getElementById 
*/ 
var form = document.getElementsByTagName("form")[0];  
if (form.addEventListener) { 
    form.addEventListener('submit', functionThatShouldBeCalledBeforeSubmit, false); 
} else if (form.attachEvent) { 
    form.attachEvent('onsubmit', functionThatShouldBeCalledBeforeSubmit); 
} 

onsubmit事件將上升的任何時間提交表單。不管怎樣。

中有更多關於JS附加事件的細節:https://developer.mozilla.org/en-US/docs/DOM/element.addEventListener

+2

「//asp.net只允許有一個頁面上的形式」 - 不完全正確。你可以擁有儘可能多的表格。您只能在任何時候顯示一個服務器端表單。所以你最好通過ID來獲取表格。只是我的2美分:) – Darren

+0

@Darren Hm ...是的。如果它在runat =「server」外部,它將被髮送到客戶端(只是檢查了))。同意。我試圖把它放在.ascx控件中,它被asp.net悄悄地刪除,並且誤導了我。 –

+0

這對於由服務器控件觸發的回發不起作用,對嗎? – user632942