Как получить значение динамически создаваемого веб-элемента управления текстовым полем в 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')
Я лично предпочитаю такой подход, если я хотел бы перейти к нескольким элементам. Это избавляет меня от работы с идентификаторами и т. Д.