Почему я получаю сообщение об ошибке .Click () Event для Asp: LinkButton в Firefox? - PullRequest
0 голосов
/ 28 июня 2011

Я пытаюсь вызвать событие click () при нажатии кнопки.

В настоящее время это работает для меня в IE, однако я получаю следующую ошибку в firefox:

"ссылка.щелчок не является функцией "

Я трахал Google по этому поводу и обнаружил, что событие .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); 
}

Ответы [ 5 ]

1 голос
/ 01 марта 2012

Настройка CausesValidation="False" решит проблему

1 голос
/ 28 июня 2011

Я бы использовал для этого jQuery . Событие click, предоставляемое jQuery, предназначено для кросс-браузерной совместимости, и вы, вероятно, обнаружите, что оно работает более согласованно, чем то, что вы используете в настоящее время.

Ваш метод станет:

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

(Вы, вероятно, хотите проверить, возвращает ли $ (linkID) также элемент)

0 голосов
/ 09 ноября 2012

Просто добавьте этот фрагмент кода на страницу .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 на свой собственный.

0 голосов
/ 09 декабря 2011

Я пробовал щелкнуть () - Метод Jquery тоже, но событие никогда не было запущено.

Вы можете получить доступ к сгенерированному методу javascript кнопки Link напрямую:

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

ASP-Linkbutton отображается в поле ввода и привязке в конечном HTML-коде.Первый параметр - это (client-) имя этого поля ввода.

0 голосов
/ 28 июня 2011

Если вы не используете 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

Однако , другой альтернативой является вызов функции, обрабатывающей ваше событие нажатия кнопки. Просмотрите Source и проверьте, что это такое, это будет что-то вроде __doPostback('ButtonNext',...); и вызовите его в функции ExecuteLink ().

...