Защита и лечение компьютера от вирусов
По работе мне довольно часто приходиться сталкиваться с компьютерами, зараженными вирусами (на самом деле не всякая...
Выбираем значения и считаем сумму
Недавно понадобилось сделать на JavaScript одну казалось бы довольно тривиальную задачу — автоподсчет «на лету» общей суммы заказа в корзине интернет-магазина. Казалось бы — данная функция настолько популярна, что готовых примеров должно быть сотни. Не тут-то было. Почесав затылок и выпив пару кружек кофе приступил к собственной релизации задумки, которой и хочу поделиться.
смайлики. Часть 2.
В прошлой статье я писал, как добавить к текстовому полю формы JavaScript, который добавляет в форму BB-код смайлика...
Добавляем в форму смайлики
На самом деле добавить в форму гостевой книги или комментариев смайлики не так сложно, как кажеться — нужно...
Вред от XHTML 1.0 Strict
Мода на «web 2.0», стремление подогнать сайты под какие либо стандарты вынуждают web-мастеров идти на...
аренда экскаватора и цитаты про аренда экскаватора. Диваны-раскладушки. Мягкая мебель: диваны, кресла, угловые диваны, диваны-кровати. аренда трала екатеринбург
|
последние сообщения на форуме
Выбираем значения и считаем сумму28 июля 2009Недавно понадобилось сделать на JavaScript одну казалось бы довольно тривиальную задачу — автоподсчет «на лету» общей суммы заказа в корзине интернет-магазина. Казалось бы — данная функция настолько популярна, что готовых примеров должно быть сотни. Не тут-то было. Почесав затылок и выпив пару кружек кофе приступил к собственной релизации задумки, которой и хочу поделиться. Сразу показываю, что должно получиться: Попробуйте изменить цифры в полях ввода — вы увидите, как внизу таблицы автоматически считается общая сумма. Серверную часть скрипта, формирующего таблицу заказываемых товаров мы здесь рассматривать не будем, скажу лишь, что в таблице обязательно должны присутствовать такие элементы как:
Несмотря на то, что все вышеописаное выглядит несколько мутновато, на самом деле ничего сложного нет: все это очень легко сделать при формировании страницы на сервере путем подстановки какого либо идентификатора товара в префиксу или суффиксу. Ниже вы поймете, о чем речь. Итак, исходный HTML-код таблицы (если еще не успели посмотреть исходник этой страницы):
Как видите, вполне обычная таблица. Единственное, что кому то может показаться странным — это довольно редко встречающийся тег <bdo>. Выбран он именно из за своей редкости — что бы обезопаситься от случайной встречи этого тега вне нашей таблицы. Использовать какие либо менее экзотические теги с определенным классом я не стал — во-первых, как мне кажется это работает медленнее, а во-вторых — существует вероятность того, что этот же класс в данном скрипте кто то после меня использует не там где надо. Кстати, если интересно — тег <bdo> вполне безобиден, и применяется всего лишь для изменения направления текста (для языков, в которых пишут справа-налево), в моем случае атрибут этого тега - dir='ltr', т.е. текст пишется как надо — слева-направо. Так что ни семантика, ни смысл не страдают. Теперь давайте рассмотрим отдельно взятую строку таблицы. С номером, названием и ценой думаю вопросов нет. Далее идет текстовое поле со значением по умолчанию (его подставляет серверный скрипт). Так же у этого поля есть id и свойство onBlur, вызывающее функцию, которую мы напишем ниже. Параметры этой функции:
Повторюсь — все это очень легко генерируется серверными скриптами. Например, для этой статьи я просто запустил php-скрипт в цикле и подставил значения счетчика к префиксам inp_ и bdo_. Небольшое отступление: я использовал onBlur - событие, возникающее когда текстовое поле теряет фокус (т.е. курсор перемещается в другое поле, в адресную строку браузера, да и просто если человек щелкнул по кнопке формы или даже по тексту). Вместо этого можно было использовать onChange — событие, возникающее когда текст поля изменен и поле потеряло фокус. Но в данном случае это не принципиально. Теперь напишем javascript-функцию, которая будет обрабатывать все изменения в количестве товаров. Комментариев в самом коде более чем достаточно, так что дополнительно что то расписывать не вижу смысла. Итак:
Итак, осталось только приложить архив с исходным кодом и сделать небольшое, но важное предупреждение: не стоит безоговорочно доверять проверкам, выполненным javascript, и всегда проверяйте данные, пришедшие от пользователя на стороне сервера. Помните, что JS-проверки нужны для удобства пользователя, а серверные — для Вашего спокойствия и сохранности нервов. |