#jquery
#jquery
Вопрос:
У меня есть asp.net страница 4.0 с использованием jquery и пользовательского интерфейса jquery и ajax.
Проблема: на странице могут отображаться данные, в которых запись помечена как недоступная для редактирования (в коде, а не из состояния записи базы данных SQL Server). К вашему СВЕДЕНИЮ: страница будет помечена во время ее загрузки с сервера, а не на основе какого-либо пользовательского ввода.
Когда страница помечена как недоступная для редактирования, мне нужно выполнить ряд действий со страницей.
Отключите ряд элементов выбора и ввода текста и кнопок.
Когда пользователь пытается отредактировать (или щелкает) эти элементы управления, мне нужно отобразить оповещение.
Может ли кто-нибудь помочь мне с самым простым способом добиться этого?
Могу ли я просто применить класс ко всем этим элементам управления, а затем привязать события jquery к классу?
Комментарии:
1. Здесь у вас логическая проблема: как только вы отключаете какой-либо элемент, для этого элемента нет события щелчка. Это отключено.
Ответ №1:
Отключенные элементы формы не запускают click
событие, но их родительские элементы все еще могут его видеть. Вы можете перехватить click
событие контейнера этих полей ( form
, например), а затем посмотреть, на какой элемент был нажат (через event.target
свойство, которое jQuery проверяет, правильно ли установлено в кроссбраузерном режиме). Если это один из этих отключенных элементов, вы можете создать свое оповещение:
$("selector_for_the_form").click(function(event) {
if (event.target.disabled) {
alert("You can't click the " event.target.name " field");
}
});
Это будет работать только в браузерах, которые создают событие и позволяют ему распространяться. Firefox и Opera этого не делают; IE и Chrome делают.
Однако вместо того, чтобы отключать поля формы, вы могли бы рассмотреть возможность их установки readonly
вместо этого. Подробности здесь. Это делает работу намного надежнее (живой пример).
Ответ №2:
Редактировать: только что понял, что в верхней части вашего поста написано ASP извините: P Но, вероятно, есть другие способы сделать то же самое с использованием ASP
Возможно, вам придется переключить состояние только для чтения любых текстовых полей или входных данных, которые вы используете.
Если вы используете PHP, вы можете передать переменную через GET и использовать это, чтобы указать элементам быть доступными только для чтения или даже отключенными.
Например
<input type="textbox" name="box01" <?php if ($_GET["disable"]==true) {echo 'readonly="readonly";} ?> />