Подтвердить что ты не робот

Выбор атрибута ID с помощью JQuery в ASP.NET

Я только начал использовать JQuery в VS 2008, и до сих пор мне это нравится! Но я смущен тем, как я должен использовать JQuery, чтобы выбрать элементы управления asp.net на веб-странице.

Например, у меня есть следующий код (просто макет):

<asp:textbox id="txtSomeData1" runat="server" text="Some Data!!"></textbox>

Теперь, если я хочу использовать JQuery для выбора текстового поля и изменить его текст на "Some More Data!!", тогда мне нужно будет сделать что-то вроде:

$('input#ctl00_ContentPlaceHolder1_txtSomeData1').val('Some More Data!!');

Который, откровенно говоря, раздражает, потому что я не хочу возиться с необходимостью выяснить, что такое идентификатор элемента управления после его отображения на веб-странице (ctl00_ContextPlaceHolder... blah blah blah).

Есть ли способ, которым я могу выбрать текстовое поле, не используя его id? Кроме того, я знаю, что вы можете выбрать по имени класса, но это мало помогает, если элемент управления, который вы выбираете, не имеет класса.

Я просто что-то пропустил?

JUST TO REITERATE: я не хочу использовать класс для выбора тега ввода!! Я хотел бы использовать идентификатор "txtSomeData1", а не длинный идентификатор, который отображается на веб-странице.

4b9b3361

Ответ 1

Что вы хотите сделать:

$("input[id$='_txtSomeData1']").val().....

или вы можете добавить класс или настраиваемый атрибут в текстовое поле, которое вы можете выбрать на

Ответ 2

если javascript находится в том же файле .aspx, вы можете сделать:

$('<%= txtSomeData1.ClientID %>').val('Some More Data!!');

Ответ 3

Это большая жалоба сообщества с веб-формами ASP.Net. В ASP.Net 4.0 вы получаете контроль над своими идентификаторами, так что, как будто вы написали его в необработанном HTML. В качестве альтернативы, без .NET 4.0, вы можете использовать ASP.Net MVC, который по большей части не использует серверные элементы управления, поэтому у вас не будет проблемы.

Но, как и счастливое время, Гарри говорит, что добавление класса может быть желательным, если вы работаете с веб-формами и jQuery.

Ответ 4

Если вы собираетесь использовать JavaScript для своего собственного .js файла, вы застряли либо с жестким кодированием в id (наиболее эффективном), либо с помощью селектора регулярных выражений, либо с помощью неэффективного селектора имен классов.

Однако, если он находится в том же файле, что и элемент управления .NET, вы всегда можете использовать $('<%=txtSomeData1.ClientID %>')

Ответ 5

Есть много селекторов для использования... возможно, добавление класса - это то, что вы хотите сделать.

http://docs.jquery.com/Selectors

Ответ 7

Вы можете добавить классы "маркер" к любому элементу управления, единственная цель которого предназначена для использования в селекторе jQuery. Это, наряду с навигацией по иерархии дерева (что-то вроде "$(element).children('.myClass').show()" может быть хорошим способом сделать это без идентификаторов.

Btw, http://visualjquery.com/ - отличный способ просмотра API-интерфейсов jQuery и т.д.

Ответ 8

Вы можете использовать нотацию элемента [id $= Идентификатор], которая ищет идентификатор, заканчивающийся указанным вами текстом (это идентификатор, указанный вами в разметке ASPX). Вот пример, иллюстрирующий, как вы можете его использовать (см. Слайд # 30): Создание приложений интрасети с помощью ASP.NET AJAX и jQuery.

Ответ 9

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