0

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

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

“link.click 不是函数”

我一直在搜索谷歌,发现并非所有版本的 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); 
}
4

5 回答 5

1

我会为此使用jQuery 。jQuery 公开的click事件被设计为跨浏览器兼容,您可能会发现它比您当前使用的更一致。

您的方法将变为:

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

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

于 2011-06-28T10:54:28.910 回答
1

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

于 2012-03-01T09:51:03.973 回答
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() 函数中调用它。

于 2011-06-28T11:05:20.083 回答
0

我也尝试了 Jquery 的 click()-Method,但该事件从未被触发。

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

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

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

于 2011-12-09T10:10:17.317 回答
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”。

于 2012-11-08T22:11:24.287 回答