Конкурс для javascript-гуру!

Объявляю конкурс среди javascript-программистов!

В качестве конкурсной задачи предлагаю выполнить зачётное задание по javascript, которое выполняли в этом году студенты web-курсов на которых я преподаю.

Итак, задание:

Дана форма. Нужно:

  1. При щелчке по лейблу и при помещении фокуса в поле нужно полю добавить класс «edit».
  2. При убирании фокуса из поля нужно:
    1. очистить содержимое поля от лишних пробелов слева и справа и от дублированных пробелов;
    2. записать содержимое поля в одноимённое свойство объекта inputData;
    3. проверить:
      1. если содержимое поля пустое, то нужно убрать класс «edit» и добавить класс «error»,
      2. иначе — вернуть первоначальный класс.
  3. При щелчке по кнопке «Show All» проверить, нет ли пустых свойств у объекта inputData.
    1. Если есть — открыть окно «alert» с сообщением: «Please fill all fields!»,
    2. иначе — записать содержимое объекта inputData в переменную и вывести в окно «alert» в таком виде:
      firstname = Vasily
      lastname = Pupkoff.

Задание достаточно простое. Проблем, думаю не будет, однако нужно соблюсти следующие условия:

  1. Кроссбраузерность.
  2. Универсальность — должно быть применимо ко всем текстовым полям ввода (type=”text”). Даже если я захочу добавить ещё несколько полей и соответствующие свойства объекта inputData, скрипт должен работать и для них.
  3. Не использовать фреймворки и библиотеки javascript.
  4. Код должен быть только в файле script.js, ни html, ни css редактировать нельзя.

Конкурс закончился. Работы проверяются.

Дата: 17.05.2008
»
Категории: JavaScript | Развлекуха
Google     

]]> FX Poster ]]>

First Name:

Эта структура строго зафиксирована? Т.е. мне label’ы искать учитывая именно такую структуру?

»

]]> Никита ]]>

А зачем тебе label-ы искать? Здесь лейблы искать не нужно. Подумай ! :)

»

]]> FX Poster ]]>

Ты тогда уточняй :)

> При щелчке по лейблу и при помещении фокуса в поле нужно полю добавить класс «edit».

onclick label’а и onfocus input’а – это разные вещи. тебе нужно на onfocus событие вешать? а то я сдуру повесил на onclick :)

»

]]> FX Poster ]]>

Да, и куда решения отправлять? :)

»

]]> FX Poster ]]>

Универсальность — должно быть применимо ко всем текстовым полям ввода (type=”text”). Даже если я захочу добавить ещё несколько полей, скрипт должен работать и для них.

Опять-же – мо-моему написанное немного не совпадает с тем, что ты хотел написать. :)
Вариантов два:
1. Выбирать со страницы все input[type="text"]
2. Если ты добавишь новые поля на страницу – ты добавишь их же и в массив inputData – и для “доставания” самих input’ов можно использовать только его.

По логике – ты, скорее всего, имел ввиду второй вариант… А вот по написанному – ИМХО, первый. :)

»

]]> Алик Кириллович ]]>

Послал ссылку на решение через раздел “Контакты”.

Решение соответствует условию задачи и работает с динамически добавленными текстовыми полями.

Также было выполнено условие кроссбраузерности: проверял под IE6, IE7, IE8b, Firefox 2, Opera 9, Safari 3 Win.

»

]]> Никита ]]>

FX Poster, я описал действие пользователя. Тебе решать на какое событие вешать.
Насчёт универсальности условие подправил.

Алик Кириллович, спасибо. Будем посмотреть.

»

]]> Денис Радченко ]]>

Хороший конкурс, жалко что я знаю JS недостаточно, чтобы в нем участвовать.

»

]]> Никита ]]>

Денис Радченко, ну а хотябы попробовать свои силы? :)

»

]]> FX Poster ]]>

Денис Радченко
А ты попробуй :)

»

]]> Денис Радченко ]]>

Попробую свои силы, но уже вне конкурса.

»

]]> Андрей ]]>

Мне задача понравилась) Сейчас решение пришлю

»

]]> Конкурс для javascript-гуру! » Блог FX’а ]]>

[...] организовал конкурс для JS-программистов. Задание довольно простое, у меня ушел примерно час на [...]

»

]]> Дубровский ]]>

FX Poster, я описал действие пользователя. Тебе решать на какое событие вешать.

Если вешать на клик по лейблу (благо он связан с инпутом через for), это противоречит здравому смыслу, т.к. 1) есть завязка на лейблы, которые многие ленятся расставлять; 2) не будет работать, если ходить по полям табом. Так что я бы убрал из формулировки лейблы, чтоб не морочить людям голову (или так и надо?) – фокус не исключает клик по лейблу, но им не ограничивается.

Насчет пункта про универсальность – не совсем понял. “Добавить” – в смысле, дописать в html-файлик, или динамически?

Может поучаствую, если время будет :)

»

]]> Никита ]]>

1. Ещё раз — я только описал действия пользователя. Вам решать на какие события вешать.

2. «Добавить» — в смысле, дописать в html-файлик

Буду рад, если поучаствуете.

»

]]> Yuriy Drozdov ]]>

Жаль, что не в пятницу написал, так на выходных можно было заняться, в рабочие дни мало времени…

»

]]> Никита ]]>

Yuriy Drozdov, время ещё есть до конца месяца.

»

]]> atrey ]]>

я похожую штуку уже сделал.
я делаю форму с классом strictform, в ней поля с классом strict.
и джаваскриптом на эту форму навешивается обработчик заполнения.
пробелы она, конечно, не проверяет, но можно проверить, например, правильность адреса почты.

»

]]> Evgeny Sergeev ]]>

| При щелчке по лейблу и при помещении фокуса в поле нужно полю добавить класс «edit»

| иначе — вернуть первоначальный класс поля.

Правильно ли я понял, что под добавлением класса подразумевается замена текущего класса на “edit”? Или Вы все же имели в виду добавление класса? Тогда не понятно, зачем возвращать первоначальный класс. Достаточно убрать edit.

»

]]> Никита ]]>

Имелось в виду: иначе — убрать класс «edit».

»

]]> Evgeny Sergeev ]]>

:-) сейчас перечитал свой предыдущий комментарий. Формулировка неудачная. Ну да ладно.

Еще вопрос – можно ли будет посмотреть варианты скприптов предложенных другими участниками ( или хотябы вариант победителя)?

»

]]> Никита ]]>

Я разберу работы и прокомментирую каждую в отдельном посте.

»

]]> Dmytro Shteflyuk ]]>

Хех, публичная порка — это хорошо :-)

»

]]> Игорь ]]>

Хех, посмотрим, смогу ли я помериться силами с твоими учениками :)

»

]]> Evgeny Sergeev ]]>

Если разбор полетов будет, то я тоже приму участие.

»

]]> Ви JavaScript-гуру? Тоді вам необхідний власний логотип! | The Taiji of Web Development ]]>

[...] блозі Нікіти Селецького нещодавно почався конкурс для програмістів на JavaScript. Суть задачі не складна та цілком практична [...]

»

]]> [NSU]said ]]>

Сделал что смог и отослал. Поначалу думал, что кроссбраузерность и универсальность мне не по зубам (я очень мало пишу на js), но ничего – посидел и кое-что наваял :) В общем попробовать стоило.

»

Напишите комментарий