ASP.NET DataList - проверка JavaScript всех текстовых полей - PullRequest
1 голос
/ 14 мая 2009

Простая настройка: корзина покупок в виде списка данных.

Заголовок имеет две кнопки: обновить количество и удалить выбранные элементы

Каждый элемент DataList имеет (среди прочего) текстовое поле с id = "txtQty", в котором хранится количество элемента корзины покупок.

Пользователь должен иметь возможность изменить значения в этих текстовых полях, а затем нажать кнопку Обновить количества в заголовке, чтобы сохранить все изменения за один раз.

У меня есть логика для фактического сохранения, но теперь я возвращаюсь, чтобы добавить дополнительную проверку. Я надеялся вызвать одну функцию JavaScript из события OnClientClick кнопки UpdateQuantities, которая затем перебирает все элементы DataListItems, находит текстовое поле txtQty и проверяет, что это допустимый числовой ввод.

У меня возникли трудности с поиском лучшего способа сделать это. До сих пор моей единственной реальной идеей было бы перебрать элементы формы и найти что-нибудь с идентификатором, который соответствует «txtQty» (поскольку ASP.NET перезаписывает идентификаторы автоматически), а затем проверить этот конкретный элемент. Это не похоже на лучшее решение. Есть ли какие-нибудь идеи получше?

Ответы [ 4 ]

1 голос
/ 15 мая 2009

Я использовал немного метода LongHorn, чтобы получить желаемые результаты. Используя пользовательский валидатор, я использовал его функцию проверки на стороне клиента для вызова функции JS, которая проверяла отдельное текстовое поле в событии изменения текста.

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

1 голос
/ 14 мая 2009

Почему бы не добавить валидатор в вашу DataGrid, чтобы проверить, является ли количество действительным числом? Это было бы самым простым на сегодняшний день.

Если это не решение, у меня будут все эти текстовые поля txtQty с одинаковым классом css. Затем вы можете использовать JQuery, чтобы найти все элементы с этим именем класса и просмотреть их. Что гораздо лучше, чем перебирать всю форму и проверять, содержит ли идентификатор элемента «txtQty» в своем идентификаторе.

Другой способ, это иметь скрытое поле, в котором были бы все идентификаторы текстовых полей, которые вы хотите проверить. Вы добавили бы в это скрытое поле по мере добавления текстовых полей. Затем просто разбейте скрытое поле в массиве идентификаторов и найдите только эти идентификаторы.

0 голосов
/ 15 мая 2009

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

Вы можете добавить проверочный элемент управления или свернуть свой собственный.

0 голосов
/ 14 мая 2009

Дубликаты ID на самом деле не очень хорошая вещь. Вы можете попробовать присвоить класс текстовому полю - «validate-amount» было бы хорошо, потому что вы можете применять несколько классов в качестве правил проверки.

<input type="textbox" class="validate-quantity validate-min" />

Таким образом, вы можете выполнять итерацию по форме в поисках ваших правил проверки, а не нацеливаться на конкретное текстовое поле.

...