2012-12-01 52 views
0

我正在使用一些腳本來導致回發。這裏是上下文:使用JavaScript做ASP.NET回發(單擊LinkBut​​ton) - 回發發生但不是Click事件

  • 用戶點擊鏈接到執行需要知道自己的當前位置
  • 腳本得到(使用navigator.geolocation.getCurrentPosition)
  • 當它的位置從瀏覽器的當前位置的功能(上述調用是異步的 - 您必須等待用戶同意共享他們的位置)我希望腳本將位置發回服務器。我通過模擬隱藏鏈接按鈕回發來做到這一點。

下面是相關代碼:

function submitLocation_Inline(position) { 
var latitude = position.coords.latitude; 
var longitude = position.coords.longitude; 
document.getElementById("ctr11837_Locator_hLat").value = latitude; 
document.getElementById("ctr11837_Locator_hLng").value = longitude; 
var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm._doPostBack('ctr11837_Locator_btnSubmitLocation', 'inline'); 
} 

<a href="javascript:__doPostBack('ctr11837$Locator$btnSubmitLocation','')" id="ctr11837_Locator_btnSubmitLocation"></a> 

在後面的代碼我有上隱藏的LinkBut​​ton(btnSubmitLocation_Click)click事件的處理程序。然而,這從來沒有被稱爲。回發確實發生了,但爲了處理它,我必須在Page_Load期間檢查Request [「_ EVENTTARGET」]和Request [「_EVENTARGUMENT」],以驗證它是我想要的回發。

我該如何調整我的代碼以使btnSubmitLocation_Click被調用?

PS - 不確定這是否相關:隱藏的linkbutton位於UpdatePanel中。

+0

檢查'__EventTarget'隱藏字段並手動觸發單擊處理程序是執行此操作的唯一方法。 – jbabey

回答

2

我認爲問題在於你正在調用__doPostback()發送控件的ClientId(我想你正在使用一個asp.net鏈接按鈕)。只需看看linkbutton自動生成的href

嘗試撥打prm.__doPostBack('ctr11837$Locator$btnSubmitLocation', 'inline')代替。

編輯:它看起來像你在prm.__doPostBack()下拉下劃線,檢查你的代碼。

+2

謝謝 - 原來這是90%的權利,因此接受了答案。您需要在調用__doPostBack(帶有雙下劃線的函數 - 在所有自動生成的回發調用中看到)中使用「帶美元的唯一ID」。唯一不太正確的是調用prm .__ doPostBack()不起作用 - 您只需調用__doPostBack()。然而,我之前使用的是prm._doPostBack()函數(帶有一個下劃線)。 – Laurence

相關問題