0

ボタンがクリックされたときに click() イベントを発生させようとしています。

これは現在 IE で動作しますが、Firefox では次のエラーが表示されます。

「link.click は関数ではありません」

私はこれに関してグーグルをトロールしており、.clickイベントがFirefoxのすべてのバージョンでサポートされていないことがわかりました.

誰かが代替案を提供できますか? 以下のコード:

<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

設定CausesValidation="False"すると問題が解決します

于 2012-03-01T09:51:03.973 に答える
1

これにはjQueryを使用します。jQuery によって公開されるclickイベントは、ブラウザー間で互換性があるように設計されており、現在使用しているイベントよりも一貫して動作することがわかるでしょう。

メソッドは次のようになります。

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

(おそらく $(linkID) が要素を返すかどうかも確認したいでしょう)

于 2011-06-28T10:54:28.910 に答える
0

jQueryを使用していない場合、代替手段はFirefoxのかなりハッキーなマウスイベントです。

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() メソッドも試しましたが、イベントはトリガーされませんでした。

Linkbutton の生成された JavaScript メソッドに直接アクセスできます。

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

ASP-Linkbutton は、最終的な HTML コードの入力フィールドとアンカーにレンダリングされます。最初のパラメータは、この入力フィールドの (クライアント) 名です。

于 2011-12-09T10:10:17.317 に答える
0

</body>次のコード スニペットを .master ページまたはその他の適切なページのタグの直前に追加するだけです。

<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 に答える