Как получить значение динамически создаваемого веб-элемента управления текстовым полем в asp.net

Моя страница aspx содержит список продуктов, а также динамически генерируемые текстовые поля и одну кнопку заказа для каждого продукта.

Текстовые поля и кнопки создаются во время выполнения с идентификаторами, такими как txt110234,txt110235... и т. Д. Для текстовых полей и btn110234,btn110235... и т. Д. Для кнопок.

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

Все работает нормально, но теперь я хочу сделать это с помощью ajax, поэтому мне нужно получить значение, введенное пользователем в текстовом поле. Я хочу сделать что-то вроде этого:

   var quan = document.getElementById('<%= txt' + id + '.ClientID%>').value;

Но это дает мне следующую ошибку.

Сообщение об ошибке компилятора: CS1012: слишком много символов в символьном литерале Ошибка источника:

Как я могу получить значение текстового поля? Любое предложение будет оценено.

2 ответа

Решение

Ошибка, которую вы получили, заключается в том, что вы не можете включить JavaScript внутри блока "<% =..%>". Также это не представляется возможным, поскольку выражение "<% =..%>" вычисляется на сервере до отображения страницы, но ваш "id" является переменной на стороне клиента.

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

код на стороне клиента:

function foo(ctlID)
{
   var quan = document.getElementById(ctlID).value;
}

код на стороне сервера:

TextBox txt = new TextBox();
txt.ID = "SomeID";
Form.Controls.Add(txt);
Button btn = new Button();
btn.ID = "someID";
btn.OnClientClick = "foo('" + txt.ClientID + "')";

Предложение: Один из способов сделать это - использовать селектор jQuery css. Вы можете назначить определенный класс cssclass всем входным текстовым полям и получить их все с помощью селектора jQuery.

Например, при динамическом создании текстовых полей их можно назначить CssClass =". ProductQuantity"

а затем позже используйте селектор jQuery, например, $('.productQuantity')

Я лично предпочитаю такой подход, если я хотел бы перейти к нескольким элементам. Это избавляет меня от работы с идентификаторами и т. Д.

Другие вопросы по тегам