Ответ 1
Что вы хотите сделать:
$("input[id$='_txtSomeData1']").val().....
или вы можете добавить класс или настраиваемый атрибут в текстовое поле, которое вы можете выбрать на
Я только начал использовать 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", а не длинный идентификатор, который отображается на веб-странице.
Что вы хотите сделать:
$("input[id$='_txtSomeData1']").val().....
или вы можете добавить класс или настраиваемый атрибут в текстовое поле, которое вы можете выбрать на
если javascript находится в том же файле .aspx, вы можете сделать:
$('<%= txtSomeData1.ClientID %>').val('Some More Data!!');
Это большая жалоба сообщества с веб-формами ASP.Net. В ASP.Net 4.0 вы получаете контроль над своими идентификаторами, так что, как будто вы написали его в необработанном HTML. В качестве альтернативы, без .NET 4.0, вы можете использовать ASP.Net MVC, который по большей части не использует серверные элементы управления, поэтому у вас не будет проблемы.
Но, как и счастливое время, Гарри говорит, что добавление класса может быть желательным, если вы работаете с веб-формами и jQuery.
Если вы собираетесь использовать JavaScript для своего собственного .js файла, вы застряли либо с жестким кодированием в id (наиболее эффективном), либо с помощью селектора регулярных выражений, либо с помощью неэффективного селектора имен классов.
Однако, если он находится в том же файле, что и элемент управления .NET, вы всегда можете использовать $('<%=txtSomeData1.ClientID %>')
Есть много селекторов для использования... возможно, добавление класса - это то, что вы хотите сделать.
jQuery Wildcard Selectors - это то, что вам здесь не хватает.
Вы можете добавить классы "маркер" к любому элементу управления, единственная цель которого предназначена для использования в селекторе jQuery.
Это, наряду с навигацией по иерархии дерева (что-то вроде "$(element).children('.myClass').show()"
может быть хорошим способом сделать это без идентификаторов.
Btw, http://visualjquery.com/ - отличный способ просмотра API-интерфейсов jQuery и т.д.
Вы можете использовать нотацию элемента [id $= Идентификатор], которая ищет идентификатор, заканчивающийся указанным вами текстом (это идентификатор, указанный вами в разметке ASPX). Вот пример, иллюстрирующий, как вы можете его использовать (см. Слайд # 30): Создание приложений интрасети с помощью ASP.NET AJAX и jQuery.
Пожалуйста, используйте следующий синтаксис: $ ( "[id * = txtSomeData1]" ) для ссылки на любое управление asp