Получить значение из asp: textbox с помощью JQuery
У меня есть несколько элементов asp: textbox в форме на веб-странице, ниже - фрагмент. Первый - это поле, в которое вводится получатель, а другой - более крупное текстовое поле, в которое должно быть загружено имя получателей вместе с другим текстом.
<asp:TextBox name="recipient" ID="recipient" class="inputBox" onChange="addNames()" runat="server" />
<asp:TextBox TextMode="MultiLine" name="usermessage" ID="usermessage" class="usermessage" height="128" width="425px" runat="server"></asp:TextBox>
В это второе текстовое поле загружается стандартное сообщение с использованием JQuery с этим кодом:
$(".usermessage").val("Hello etc");
Это хорошо работает, сообщение отображается.
Когда пользователь вводит имя получателя или его собственное имя в одном из других текстовых полей, запускается addNames(). Эта функция добавляет имя получателя в стандартное сообщение в поле usermessage.
function addNames() {
//update textbox
var recipient = $(".recipient").val();
var sender = $(".name").val();
$(".usermessage").val("Hello " + recipient +", \nThis is a message. \n\rKind regards, \n" + sender);
}
Проблема в том, что получатели и отправители двух переменных являются "undefined".
Привет undefined,
Это сообщение.
С уважением,
undefined
Фактический вопрос: каков правильный код для извлечения значения из текстового поля asp: text, если этот
var recipient = $(".recipient").val();
не работает?
Результат в html выглядит следующим образом:
<input name="ctl00$contentPlaceHolderRightColumn$recipient" type="text" id="ctl00_contentPlaceHolderRightColumn_recipient" name="recipient" class="inputBox" onChange="addNames()" />
Я использую JQuery v1.3.2, с Firefox v3.5.3.
Ответы
Ответ 1
Насколько я могу судить,
var recipient = $(".recipient")
Выберет все элементы dom с классом получателя. В поле ввода есть класс "inputBox".
Вам нужно выбрать по его идентификатору, используя #
Итак:
var recipient = $("#recipient")
Но вы используете элементы управления ASP.NET, которые придают ему уникальный идентификатор, сгенерированный на сервере, поэтому он уникален. (в вашем случае это ctl00_contentPlaceHolderRightColumn_recipient)
Чтобы выбрать, вам нужно будет сделать
var recipient = $("#<%=recipient.ClientID%>")
- выявлены некоторые синтаксические ошибки
Ответ 2
Если вы установили идентификатор client asp textbox, вы сможете использовать его в JQuery так же, как и у вас, но вместо хэша вместо хэша.
например.
ClientID = "recipient"
then
var recipient = $('#recipient').innerHTML()
or
var recipient = $('#recipient').text()
Ответ 3
Я думаю, что селектор jQuery возвращает вам список объектов. Вы пробовали:
var recipient = $(".recipient")[0].val();
UPDATE
Как насчет этого:
var recipient = $( "Получатель: первый" ). Вал();
У него также есть хорошее преимущество - он будет тормозить в первом матче.
Ответ 4
С помощью этого вы также можете получить кнопку asp или любой элемент управления.
var txt_recipient = document.querySelector("input[id*='recipient']");
alert(txt_recipient.Value);
вы также можете попробовать querySelectorAll()
, если у вас несколько элементов управления с одинаковым идентификатором на стороне клиента.
jQuery Equalent
$("input[id*='recipient']").val()
Ответ 5
Я думаю, что элементы управления HTML asp.net должны иметь свойство ClientID = "получатель" для доступа к элементу управления с использованием идентификатора клиента на стороне клиента. или я понятия не имею!
<asp:TextBox ID="recipient" ClientID="recipient" runat="server" name="recipient" class="inputBox" onChange="addNames()" />
попробуйте, это должно сработать.
Ответ 6
В ASP.NET вам нужно будет написать следующим образом:
var recipient = $("#<%=recipient.ClientID%>").val();