03.04.2014 Views

Май - Xakep Online

Май - Xakep Online

Май - Xakep Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

coding<br />

Вот так будет выглядеть «чистильщик» кода Всплывающая подсказка<br />

с классами. Для манипуляций с ними нам<br />

доступно три основных функции:<br />

• addClass – добавляет указанный класс данному<br />

элементу;<br />

• removeClass – удаляет указанный класс у<br />

данного элемента;<br />

• toggleClass – добавляет или удаляет класс в<br />

зависимости от наличия его у элемента.<br />

Давай сделаем более юзабельной кнопочку<br />

типа submit, которая отправляет форму на<br />

сервер. Очень бы хотелось сделать ее недоступной<br />

после первичного обращения к ней,<br />

чтобы пользователь не отправлял сообщение<br />

несколько раз подряд, ведь бывают нервные<br />

юзеры ;). Чтобы этого добиться, надо изменить<br />

атрибут disabled.<br />

Однако мои эстетические воззрения требуют<br />

еще и поменять визуальное изображение нажатой<br />

кнопки, например изменить фон, границу<br />

или надпись. Нам необходимо определить в CSS<br />

два класса — enabled и disabled. По умолчанию<br />

у кнопки будет класс enabled, а после нажатия<br />

— disabled:<br />

Меняем класс у нажатой кнопки<br />

JavaScript<br />

$("#submit-button").click(<br />

function() {<br />

$(this).attr<br />

({disabled : "true"});<br />

$("#submit-button").<br />

addClass("disabled");<br />

});<br />

Ролловер<br />

Середина статьи уже далеко позади, поэтому<br />

хотелось бы рассмотреть комплексный пример.<br />

В качестве него мы сделаем полноценный ролловер.<br />

Для самых маленьких читателей поясню,<br />

что rollover — это такая красивая кнопочка, которую<br />

можно нажать. Но не только: при наведении<br />

на нее курсора мышки и нажатии, изображение<br />

на кнопке меняется (смотри рисунок).<br />

Договоримся о том, в каких файлах у нас будут<br />

храниться эти изображения:<br />

• .jpg – исходное изображение кнопки;<br />

• _hover.jpg – кнопка при наведении мышки;<br />

• _click.jpg – нажатая кнопка.<br />

Чтобы внести ясность, приведу конкретный<br />

пример. Если основной файл называется<br />

button.jpg, то вспомогательные будут именоваться<br />

button_hover.jpg и button_click.jpg.<br />

Реализовывать ролловер на HTML будем с<br />

помощью тэга ввода с типом «изображение»:<br />

<br />

Теперь проясняется механизм работы самого<br />

скрипта: нам надо найти все элементы input<br />

с типом image и в зависимости от события<br />

поменять атрибут src. Поскольку смена имени<br />

файла будет происходить при трех событиях,<br />

вынесем этот функционал в отдельную функцию<br />

changeFilename:<br />

Меняем имя файла<br />

JavaScript<br />

function changeFilename(input,<br />

count, suffix)<br />

{<br />

var filename = $(input).<br />

attr("src");<br />

filename = filename.substr(0,<br />

filename.length-count);<br />

filename = filename + suffix +<br />

".jpg";<br />

$(input).attr( {src: filename});<br />

}<br />

Если присмотреться, то легко заметить, что<br />

эта функция берет значение атрибута src из<br />

элемента input, отрезает от имени файла count<br />

символов и добавляет suffix плюс расширение<br />

«.jpg». Фактически она меняет один суффикс<br />

(конец имени) файла на другой. Теперь осталось<br />

грамотно применить эту функцию.<br />

Для выбора нужных элементов будем использовать<br />

конструкцию $("input[@type=image]"),<br />

которая найдет все инпуты с типом image. При<br />

наведении курсора мышки на ролловер, нам<br />

нужно отрезать «.jpg» (4 символа) от имени файла<br />

и добавить «_hover.jpg». Вернуть все надо,<br />

когда мышка над другим элементом.<br />

Меняем изображение при наведении<br />

мышки<br />

JavaScript<br />

$("input[@type=image]").hover(<br />

function() { changeFilename(this,<br />

4, "_hover"); }, function() {<br />

changeFilename(this, 10, ""); });<br />

Написать обработчик нажатия мышки тоже<br />

труда не составит. В качестве события я выбрал<br />

mousedown, вместо click. Честно говоря, хотел<br />

показать, что не кликом единым живы ;). От имени<br />

файла надо откромсать «_hover.jpg» (мышка<br />

наведена), то есть 10 символов, и дописать<br />

«_click.jpg»:<br />

Меняем изображение<br />

по клику мышкой<br />

JavaScript<br />

$("input[@type=image]").<br />

mousedown( function() {<br />

changeFilename(this, 10,<br />

"_click");});<br />

Отмечу, что ролловер у нас получился довольно<br />

универсальный. Чтобы применить его, надо<br />

создать три файла, которые соответствуют<br />

состояниям кнопки, и использовать элемент<br />

input с атрибутом image. Неплохо для десятка<br />

строчек кода ;).<br />

«Вордатор»<br />

На десерт осталось уже настоящее веб-приложение<br />

— «Вордатор». Оно будет очищать HTML<br />

от лишнего кода, вставленного визуальными<br />

редакторами, например Word’ом. Интерфейс у<br />

нас будет несложным, поскольку нам требуется<br />

всего лишь два поля ввода и переключатели<br />

опций (смотри рисунок).<br />

Чтобы создать такую форму, проще всего<br />

воспользоваться таблицами. С этим, я думаю,<br />

проблем не возникнет. Для описания отдельных<br />

элементов надо использовать традиционные<br />

тэги HTML: label, textarea, input,<br />

button. Необходимо обязательно прописать<br />

идентификаторы элементов, чтобы мы смогли<br />

обрабатывать события и получать содержимое<br />

/ 130<br />

xàêåð 05 /101/ 07

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!