![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| ksnk |
|
||||||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Некий рецепт неких решений, возможно кому-то будет интересно. Возможно кто-то сделал лучше.
Делал формы с большим количеством разных контролов - кнопочек, расставленных в соответствии с представлениями заказчика... Все кнопки с javascript-механикой - смена картинок по hover, изменение картинки по клику и прочая стандартная анимация. Примерный смысл формы -- редактирование структуры и содержания некоей таблицы (расположение столбиков и строк) + В каждой строчке таблицы имеется несколько дополнительных кнопок управления с разной логикой. Практически все контролы построены на input:button. Практически все они должны выполнить некий ajax-запрос на сервер, получить результат и иногда перезагрузить окно. Нажатие на некоторые кнопки должно сопровождаться вводом данных, некоторые - предупреждением и так далее. Придумалось примерно такое решение по разметке кнопок
Понятно, что такая разметка будет валидной только с <doctype html>. Класс ajax, собственно, включает обработку нажатия на эту кнопку. Класс stdbutton отвечает за стандартное поведение при движении мыши, а внешний вид определяется по классу xxremove. при обработке .stdbutton'а он регуляркой выковыривается из className элемента (2 буквы x в начале названия) и служит ключем в массиве картинок и размеров кнопки управления, для автоматизации работы с движением мыши. Все картинки во всех состояниях расположены в одном файле. Разметкой этого файла служит массив в javascript'е
Он составляется вручную, при добавлении нового элемента. w и h - размеры, bg - массив из bakground-position, которые соответствуют разным состояниям кнопки. Для поддержки всего этого добра потребовалось написать не очень много строк на JS (jQuery)
забавным показалось то, что это единственное место, которое отвечает за ajax. Раньше все логика ajax'а размазываласть мной по всему скрипту в каждой отдельной контроллине. А сейчас можно все это свести к довольно небольшому скрипту. Если обратить внимание на обработку принятых данных, то можно заметить, что я расчитываю на json-формат данных, однако явно не заказываю его у jQuery. При ошибках скрипта или сервера сервер выводит информацию об ошибке прямо в поток, так что такой подход позволяет эту ошибку хоть как-то увидеть. Функция debug просто помещает некий текст в скрытый элемент на экране, где его можно будет посмотреть средствами отладки броузера. Функции win_alert, win_confirm, win_input - аналоги alert, confirm и prommpt, у меня реализованы через jQuery.UI.dialog, от этого необычный формат. Хотя для простоты можно описать их и так
Это сообщение отредактировал(а) ksnk - 15.11.2010, 11:49 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||||||
|
|||||||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
я вит писал расширенный конструктор создания антке с расщирением:
Это сообщение отредактировал(а) gcc - 15.11.2010, 21:11 |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
продолжение:
(это только часть, еще много есть и не доделанное еще
Это сообщение отредактировал(а) gcc - 15.11.2010, 21:14 |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
gcc, согласись, что ~1000 строк текста, еще и "недоделанного" - немного много для понимания
На пальцах там можно идею пояснить? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
ksnk, сори, я первый пост не дочитал, мне показалось что ты спрашиваешь про то, кто как делал там где много разных кнопочек... ну и я решил показать как я делал...
Это сообщение отредактировал(а) gcc - 16.11.2010, 02:02 |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |