Получить значение из текстового поля asp: с помощью JQuery - PullRequest
16 голосов
/ 23 октября 2009

У меня есть несколько элементов управления 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 (). Эта функция добавляет имя получателя к стандартному сообщению в окне сообщения пользователя.

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,
Это сообщение.

С уважением,
не определен




Актуальный вопрос: Какой правильный код для извлечения значения из текстового поля asp: если это

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.

Ответы [ 6 ]

20 голосов
/ 23 октября 2009

Насколько я могу сказать, делая

var recipient = $(".recipient")

Выберет все элементы DOM с КЛАССОМ получателя. Ваше поле ввода имеет класс «inputBox».

Вы должны выбрать по его идентификатору, используя #

Итак:

var recipient = $("#recipient")

Но вы используете элементы управления ASP.NET, которые присваивают ему уникальный идентификатор, сгенерированный на сервере, поэтому он уникален. (в вашем случае это ctl00_contentPlaceHolderRightColumn_recipient)

Для выбора вам нужно будет сделать

var recipient = $("#<%=recipient.ClientID%>")

- исправлены некоторые синтаксические ошибки

3 голосов
/ 23 октября 2009

Если вы установите clientID текстового поля asp, вы сможете использовать его в JQuery так же, как вы, но с хешем вместо точки.

* 1003 Е.Г. *

ClientID = "recipient"

then

    var recipient = $('#recipient').innerHTML() 

or

    var recipient = $('#recipient').text() 
1 голос
/ 29 августа 2017

Благодаря этому вы также можете получить кнопку asp или любой другой элемент управления в этом отношении.

var txt_recipient = document.querySelector("input[id*='recipient']");
alert(txt_recipient.Value);

вы также можете попробовать querySelectorAll(), если у вас есть несколько элементов управления с одинаковым идентификатором на стороне клиента.

Эквивалент jQuery равен

$("input[id*='recipient']").val()
0 голосов
/ 29 сентября 2016

Я полагаю, что HTML-элементы управления asp.net должны иметь свойство ClientID = "ополучатель "для доступа к элементу управления с помощью идентификатора клиента на стороне клиента. или я понятия не имею!

<asp:TextBox ID="recipient" ClientID="recipient" runat="server" name="recipient" class="inputBox" onChange="addNames()" />

попробуй, это должно сработать.

0 голосов
/ 29 сентября 2016

В ASP.NET вам нужно написать так:

var recipient = $("#<%=recipient.ClientID%>").val();

В MVC вы можете написать так:

var recipient = $("#recipient").val();
0 голосов
/ 23 октября 2009

Я думаю, что селектор jQuery возвращает вам список объектов. Вы пробовали:

var recipient = $(".recipient")[0].val();

UPDATE

А как же тогда:

var получатель = $ ( "Получатель: первый") Вал ();

.

У него также есть хорошее преимущество - он будет тормозить в первом матче.

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