我试图在单击按钮时触发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);
}
答案 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);
然而,另一种方法是调用处理按钮点击事件的函数。查看源代码并查看它是什么,它将类似__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'替换为您自己的。