| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Статьи:: Интернет технологии :: Java Script :: Динамические SELECT-ы на JavaScript или Организация выбора даты в форме
Динамические SELECT-ы на JavaScript или Организация выбора даты в форме
Эта статья расскажет Вам как правильно сделать выбор даты в форме, если день,
месяц и год разделены и выбираются отдельно, используя тэг Выглядит это примерно так:
HTML-код данного куска формы следующий (со вставками на PHP для удобства): В принципе все понятно, определено три тега select с именами day - для дней, month - для месяцев и year - для лет. Для формирования списков options используется php-код, согласитесь, писать на
html все 31 день несколько накладно
Так же хочу обратить Ваше внимание на следующее: для каждого из select-ов определен id с таким же значением, как и name - это нам понадобится далее в JavaScript-е. И для месяцев и лет определен обработчик события onChange, который будет срабатывать каждый раз при изменении пользователем года или месяца. Зачем это нужно, спросите Вы? Ответ прост: сейчас у нас вырисовывается 31 день, но при выборе, например, февраля месяца, нам необходимо пересчитывать кол-во дней в первом select-е, что бы нельзя было выбрать, например, 31 февраля. А теперь напишем и разберем этот самый функцию-обработчик rewrite_days(), который и будет перерисовывать дни в первом select-е. Код будет следующий:
Итак, в первых 3-х строчках функции, мы для простоты определяем 3 переменные, которые и будут нашими select-ами.
В 4-й строке мы определим массив из 12 чисел, а именно с кол-вом дней в каждом месяце, например, январь - 31, февраль - 28 и т.д.
Мы не будем изменять дату, когда пользователь выбрал 1-й пункт из списка месяцев, а именно “—”, поэтому заключим весь наш дальнейший функционал в if.
month.value - это текущее выбранное значение месяца. Далее мы разделим логику на 2 ветви: 1-я, когда пользователь выбрал високосный год и февраль месяц, нам необходимо показать пользователю 29 дней, и 2-я, в остальных случаях, просто нарисуем кол-во дней в выбранном месяце, используя значения из массива. Первая ветвь выглядит:
Оператор “%” возвращает остаток от деления, соответвенно, если год делится на
4 без остатка, год високосный. В следующих 2-х строках прописывам для option-а под номером 29 пару значений value/text вручную. Зачем? Смотрите ситуацию, пользователь выбрал невисокосный год, февраль. В данной ситуации у нас 28 дней, соответственно значений в select-е 29. Потом выбрал високосный год, февраль. Мы изменяем кол-во значений select-а на 30, но последний элемент имеет пустые значения value/text. Поэтому пропишем их вручную. Для варианта №2, когда пользователь не выбирает високосный год, февраль, код одинаковый:
Здесь мы вычисляем кол-во элементов в select-е используя значения массива. И далее, вручную прописываем значения value/text для элементов от 29 и выше, т.к. они могут терятся. Вот и все, что я хотел рассказать в данной статье. Если у Вас будут какие-либо замечания по коду - милости прошу, пишите комменты, буду рад. Удачи в кодинге
Автор: http://antoxa.name/ Рубрика: Java Script
Вышел MySQL 5.1.30, первый стабильный рели....
После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:
Подробнее... |
Рубрика: MySQL
| Добавлено: 28.11.2008
Тестирование параллельных программ.
Тестирование параллельного программного обеспечения представляет собой более сложную задачу по сравнению с тестированием последовательной программы. Программист должен знать о подводных камнях при тестировании параллельного кода, имеющихся методологиях и инструментарии.
Подробнее... |
Рубрика: Тестирование
| Добавлено: 28.11.2008
Архитектура AMD64 (EM64T).
Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности, достоинства и недостатки.
Подробнее... |
Рубрика: Архитектура AMD
| Добавлено: 27.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|