LinkButton не ссылается на click()

Почему это не работает?

    <script src="Scripts/jquery-1.3.2.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $('.myButton').click();
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:LinkButton id="ttt" runat="server" PostBackUrl="~/Default.aspx" CssClass="myButton">Click</asp:LinkButton>
    </div>
    </form>

Ответы

Ответ 1

Вы хотите отправить форму или добавить событие Click? Кнопка ссылки переведена на

<a id="ttt" class="myButton" href="javascript:WebForm_DoPos[...]">Click</a>

поэтому он не имеет кликов по javascript. Поэтому .click(); ничего не делает.
Я не тестировал его, но, возможно, это сработает:

eval($('.myButton').attr('href'));

Ответ 2

trigger ('click') запускает jQuery клик для прослушивания событий, с которым .NET не подключен. Вы можете просто запустить событие javascript click, которое пойдет (или запустит в этом случае) то, что находится в атрибуте href:

 $('.myButton')[0].click();

или

 ($('.myButton').length ? $('.myButton') : $('<a/>'))[0].click();

Если вы не уверены, что кнопка будет присутствовать на странице.

Джо

Ответ 3

Если вам нужно связать событие на стороне сервера OnClick, чтобы запустить его, вам нужно использовать __doPostback (eventTarget, eventArgument).

Пример:

<asp:LinkButton ID="btnMyButton" runat="Server" OnClick="Button_Click" />

<script type="text/javascript">

function onMyClientClick(){ 
  //do some client side stuff

  //'click' the link button, form will post, Button_Click will fire on back-end
  //that two underscores
  __doPostBack('<%=btnMyButton.UniqueID%>', ''); //the second parameter is required and superfluous, just use blank
}

</script>

Ответ 4

вам нужно назначить обработчик события для срабатывания, когда поднят событие click

    $(document).ready(function() {
        $('.myButton', '#form1')
            .click(function() {  
                /* 
                   Your code to run when Click event is raised.
                   In this case, something like window.location = "http://..."                      
                   This can be an anonymous or named function
                */
                return false; // This is required as you have set a PostbackUrl
                              // on the LinkButton which will post the form
                              // to the specified URL
            }); 
    });

Я тестировал выше с ASP.NET 3.5 и работает как ожидалось.

Существует также атрибут OnClientClick в Linkbutton, который указывает клиентскую сторону script для запуска при поднятии события click.

Могу ли я спросить, чего вы пытаетесь достичь?

Ответ 5

Обработчик события клика должен фактически выполнить действие. Попробуйте следующее:

$(function () {
    $('.myButton').click(function () { alert('Hello!'); });
});

Ответ 6

вам нужно указать linkButton Cssclass= "myButton", а затем использовать его в верхней части

$(document).ready(function() {
        $('.myButton').click(function(){
             alert("hello thar");
        });
    });

Ответ 7

Это круто. Насколько я понимаю, вы хотите имитировать поведение нажатия кнопки в javascript-коде. Проблема в том, что ASP.NET добавляет некоторый причудливый код javascript в обработчик onclick.

При ручном запуске события в jQuery будет выполнен только код события, добавленный jQuery, а не javascript в атрибуте onclick или атрибуте href. Поэтому идея состоит в том, чтобы создать новый обработчик событий, который выполнит исходный javascript, определенный в атрибутах.

То, что я собираюсь предложить, не было проверено, но я сделаю снимок:

$(document).ready(function() {

// redefine the event
$(".myButton").click(function() {
   var href = $(this).attr("href");

   if (href.substr(0,10) == "javascript:") {
      new Function(href.substr(10)).call(this);
      // this will make sure that "this" is
      // correctly set when evaluating the javascript
      // code
   } else {
      window.location = href;
   }

   return false;
});

// this will fire the click:

$(".myButton").click();

});

Ответ 8

Просто для уточнения, только FireFox страдает от этой проблемы. См. http://www.devtoolshed.com/content/fix-firefox-click-event-issue. В FireFox теги anchor (a) не имеют функции click(), чтобы позволить JavaScript-коду непосредственно имитировать события кликов на них. Они делают позволяют сопоставлять клик событие тега привязки, просто чтобы не имитировать его с помощью функции click().

К счастью, ASP.NET помещает код обратной передачи JavaScript в атрибут href, где вы можете получить его и запустить на нем eval. (Или просто вызовите window.location.href= document.GetElementById('LinkButton1'). Href;).

В качестве альтернативы вы можете просто вызвать __doPostBack ('LinkButton1'); обратите внимание, что "LinkButton1" следует заменить идентификатором ClientID/UniqueID LinkButton для обработки контейнеров с именами, например. UserControls, MasterPages и т.д.

Иордания Ригер