2012-12-01 26 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

相关问题