jquery отключает элементы управления и оповещение при нажатии

#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";} ?> />