为什么我在Firefox中的Asp:LinkBut​​ton的.Click()事件中出现错误?

时间:2011-06-28 10:50:38

标签: javascript click linkbutton asplinkbutton

我试图在单击按钮时触发click()事件。

这在IE中目前适用于我但是我在firefox中收到以下错误:

“link.click不是函数”

我一直在搜索google,发现所有版本的firefox都不支持.click事件。

有人能提供替代方案吗?代码如下:

<asp:LinkButton ID="ButtonNext" runat="server" CssClass="RemoveLinkStyle" TabIndex="1"></asp:LinkButton>
<table id="tblButtonNext" runat="server" cellpadding="0" cellspacing="0" class="pwbtn" onclick="ButtonClick(ButtonNext);" TabIndex="1" onmouseout="this.className='pwbtn';" onmouseover="this.className='pwbtnh';">
<tr>
    <td class="a1"></td>
    <td class="a2">
        <%= this.resourceManager.GetString("nextstep") %>
    </td>
    <td class="a3"></td>
    <td class="spacer"></td>
</tr>
</table>

function ExecuteLink(linkID)
{
    var link = document.getElementById(linkID);
    link.click();
}

function ButtonClick(linkID)
{
    PreNavigationScript();
    CallShowBlocker();
    ExecuteLink(linkID); 
}

5 个答案:

答案 0 :(得分:1)

我会使用jQuery。 jQuery公开的click事件旨在与浏览器兼容,您可能会发现它比您当前使用的更加一致。

您的方法将成为:

 function ExecuteLink(linkID)
{
   $("#" + linkID).click();
}

(您可能想检查$(linkID)是否也返回一个元素)

答案 1 :(得分:1)

设置CausesValidation="False"将解决问题

答案 2 :(得分:0)

如果您不使用jQuery,那么您的替代方案对于Firefox来说是非常hacky鼠标事件,例如

var evt = document.createEvent("MouseEvents"); 
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, 
false, false, false, 0, null); 
AnchorFieldObj.dispatchEvent(evt); 

根据mozilla.dev.tech.dom

然而,另一种方法是调用处理按钮点击事件的函数。查看源代码并查看它是什么,它将类似__doPostback('ButtonNext',...);,并在您的ExecuteLink()函数中调用它。

答案 3 :(得分:0)

我尝试了click() - Jquery的方法,但事件从未被触发过。

您可以直接访问生成的链接按钮的javascript方法:

__doPostBack('ctl00$MainContentPlaceholder$MyLinkButtonId',''); 

ASP-Linkbutton呈现给最终HTML代码中的输入字段和锚点。第一个参数是此输入字段的(client-)名称。

答案 4 :(得分:0)

只需在.master页面或</body>标记之前的任何其他合适页面中添加此代码段:

<script language="javascript" type="text/javascript">
<!--
function __doPostBack(eventTarget, eventArgument) {
var theform;
if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
theform = document.aspnetForm;
}
else {
theform = document.forms["aspnetForm"];
}
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}
// -->
</script>

将'aspnetForm'替换为您自己的。