JQuery и ASP.NET Control проблема - PullRequest
1 голос
/ 20 мая 2009

Если у меня есть пользовательский элемент управления ASP.NET, который отображается как HTML-элемент управления с идентификатором, я пытаюсь добавить атрибут в элемент управления вводом с помощью jQuery.

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

Во-первых, мой jQuery не может его выбрать.

Пока у меня есть:

$(document).ready(function() {
  $(client id of the input control).attr('onclick', function () { alert('hey!'); });
});

Кажется, что jQuery пытается найти элемент управления вводом, но не может.

Есть идеи?

UPDATE

Обычно представленные решения будут работать, но, поскольку это ASPX-страница публикации SharePoint, блоки кода не допускаются ... Попытка обойти другие варианты.

Ответы [ 8 ]

5 голосов
/ 20 мая 2009

Просто подключите событие click в jQuery.

$(document).ready(function() {
    $(id of the input control)click(function() {
        alert('hey!');
    });
});

Кроме того, убедитесь, что вы не просто вводите введенный вами идентификатор в элемент управления в jQuery. ASP.Net отображает элемент управления с совершенно другим идентификатором, чем вы дали элемент управления. На одном из сайтов, которые я запускаю, у меня есть следующая кнопка:

<asp:Button ID="btnSignup" runat="server" Text="Sign Up" />

Идентификатор в отображаемом HTML не является btnSignup, он фактически отображается как ctl00_cpLeft_btnSignup. Чтобы выбрать этот элемент управления с помощью jQuery, вы можете сделать это:

$("input[id$='btnSignup'").click(function() { ... });

Edit:

$("input[id$='btnSignup'}").click(function() { ... });

Вы также можете выбрать, используя:

$("#<%= btnSignup.ClientID %>").click(function() { ... });

Edit:

Я изучил использование метода <% = ...%>, и вам понадобится ваш javascript IN файл ASPX / ASCX, чтобы он работал. Из-за этого я буду придерживаться метода регулярных выражений.

2 голосов
/ 20 мая 2009

Вам необходимо использовать его ClientID. Если ваша разметка ASP.NET выглядит следующим образом:

<uc:MyControl runat="server" ID="myControl1" />

Ваш селектор jQuery должен выглядеть следующим образом:

$(document).ready(function() {
  $("<%=myControl1.ClientID%>").attr('onclick', function () { alert('hey!'); });
});
2 голосов
/ 20 мая 2009

Что вы используете в качестве идентификатора элемента управления вводом?

Вы должны использовать ClientID элемента управления, а не его ID.

1 голос
0 голосов
/ 20 мая 2009

Поскольку вы упомянули Sharepoint, вас может заинтересовать эта серия статей по EndUserSharepoint , которая фокусируется на интеграции jQuery с Sharepoint . Автор обсуждает получение jQuery для управления веб-частями.

0 голосов
/ 20 мая 2009

просто чтобы сообщить вам, часть document.ready не нужна , используя элемент управления asp.net, идентификатор изменяется на нечто отличное от ожидаемого, ct100 .... выбрасывается в его начале, поэтому этот способ будет искать фактическое имя идентификатора, даже если asp.net выбрасывает искаженный код в начале, потому что он ищет все элементы (*), которые имеют идентификатор, заканчивающийся на указанный текст.

$(function() {
   $("*[id$='idofcontrol']".click(function() { alert('hey!'); });
});

или перейдите к исходному виду просмотра и скопируйте имя идентификатора и вставьте его в свой код, или просто используйте селектор класса css следующим образом:

$(function() {
      $('.myclassname').click(function() { alert('hey!'); });
});
0 голосов
/ 20 мая 2009

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

Вы не хотите перестраивать эту клиентскую сторону. Вместо этого Control определяет ClientID, который будет возвращать идентификатор элемента управления, отображаемый на клиенте. Вставьте это в ваш jQuery или в переменную javascript, которую ваш jQuery может увидеть, если вы помещаете jQuery в отдельный файл сценария), и все будет в порядке.

0 голосов
/ 20 мая 2009

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

Какой идентификатор элемента управления появляется в HTML?

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