Событие jQuery Click на кнопке asp: - PullRequest
3 голосов
/ 04 апреля 2009

У меня есть кнопка на стороне сервера, как

<asp:Button ID="btnSummary" runat="server" OnClick="btnSummary_Click" Text="Next" />

Я хочу прикрепить событие jQuery Click, используя его идентификатор и НЕ используя альтернативный атрибут класса.

Я пытался прикрепить событие клика как:

$("#btnSummary").click(function() 
        {
            alert("1");
        });

Но событие щелчка не срабатывает. Кроме того, я также попробовал $("id[$btnSummary]").

Есть ли способ прикрепить событие click к asp: button с помощью jQuery без атрибута class на кнопке?

Ответы [ 12 ]

12 голосов
/ 04 апреля 2009

Некоторые из имеющихся у вас вариантов можно найти здесь

Как запретить ASP.NET изменять идентификаторы для использования jQuery

EDIT:

После прочтения ваших комментариев к другим ответам кажется, что вам нужно связать обработчик событий onclick внутри pageLoad ASP.NET AJAX, чтобы он связывался с каждой обратной передачей, включая асинхронные обратные передачи. С другой стороны, $ (document) .ready () связывается только один раз при начальной загрузке страницы

function pageLoad(sender, args)
{
     $("#<%=btnSummary.ClientID %>").click(function() 
    {
        alert("1");
    });
}

Дейв Уорд написал хорошую статью о разнице между pageLoad и $ (document) .ready () .

9 голосов
/ 12 августа 2011

Добавьте ClientIDMode = "Static" к вашей кнопке asp: что-то вроде этого:

<asp:Button ID="Button1" runat="server" ClientIDMode="Static" Text="Button" />

Это позволит идентификатору остаться прежним. Он отключает автоматически сгенерированные имена для этого элемента управления.

Вот ссылка для этого: http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientid.aspx

5 голосов
/ 04 апреля 2009
  1. Проверьте, присутствует ли атрибут id в источнике html при запуске сайта.
  2. Есть ли у вас функция щелчка внутри функции готовности документа?

-

$(document).ready(function() {
    // put all your jQuery goodness in here.
});

EDIT:

Поскольку серверный элемент управления и идентификатор изменяются, вам нужно будет динамически обновлять javascript при каждой загрузке страницы с помощью переменной.

1 голос
/ 09 сентября 2016

Назначение селектора для класса сработало для меня.

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="My Button" CssClass="myButton"/>

<script>
    jQuery(".myButton").click(function () {
        alert("clicked");
    });
</script>
1 голос
/ 15 апреля 2009

Я немного запутался здесь и сейчас. Позвольте мне объяснить:

1. I added a button on the page:
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server"  Text="Button" />
<div>

2. Then I added a JavaScript and jQuery:
<script type="text/javascript">
                    $(document).ready(function() {
                    $("#Button1").click(function() {
                        alert("Hello world!");
                    });

                    });
                </script>

3. The generated html is this:
<div>
  <input type="submit" name="Button1" value="Button" id="Button1" />
<div>

Теперь я не вижу, чтобы ASP.NET (asp.net 3.5) менял идентификаторы. Почему я вижу другое поведение?

Btw. Это работает, когда я нажимаю кнопку!

Спасибо.

1 голос
/ 04 апреля 2009

ASP.NET генерирует уникальный идентификатор для клиентской части, вы можете использовать его для привязки события. Этот идентификатор генерируется на основе позиции этого элемента управления внутри ControlCollection и различных INamingContainers, это ужасно, и вы не можете догадаться об этом ...

Добавьте этот вид кода где-нибудь на своей странице, чтобы подключить эту кнопку.

<script type="text/javascript">
  $(function() { $("#<%=btnSummary.ClientID%>") }).click(function(){/*...*/});
</script>
0 голосов
/ 23 ноября 2018

Пожалуйста, попробуйте ниже:

document.getElementById("<%=button1.ClientID %>").click();
0 голосов
/ 29 августа 2017

Пожалуйста, используйте следующий синтаксис: $("[id*=Button1]") для ссылки на любой элемент управления asp

0 голосов
/ 16 февраля 2016

Вы достигли там. Я думаю, есть два способа,

  1. Либо проверьте элемент управления из браузера, либо посмотрите идентификатор элемента управления, выглядит как ct1000_ btnSummary. использовать этот идентификатор при событии Click в jQuery.

заменить код

 $("#ctl00_contentplcedholder_btnSummary").click(function() 
    {
        alert("1");
    });
  1. Следующий шаг довольно прост - просто добавьте атрибут ClientIdMode = "static" к вашему элементу управления и используйте фактическое событие Jquery click, которое оно сработает

0 голосов
/ 05 марта 2014

У меня была такая же проблема, у меня это работает

<asp:Button ID="Button1" runat="server" Text="ASP Button" OnClientClick="return false;" />

Это добавление return false, которое, кажется, имеет значение. Надеюсь, это поможет.

привет

Питер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...