Хочу уточнить, что это цвет самого текста placeholder'а. Возможно, что кому-то лень будет прописывать что-то в CSS, если можно просто $(..).blurfocus('Яблоко', {color: 'gray'}); Это сделано просто для удобства, ведь зачастую ничего больше и не нужно. Если Вы желаете это дело через CSS оформлять, то в опциях укажите лишь пустую строку для цвета.
Не нужно вообще в html указывать атрибут placeholder. Скрипт сам его добавит.
Стоп. Есть работающий атрибут. Пусть пока не поддерживаемые всеми браузерами. Логично будет использовать его, а для остальных браузеров написать JS. Я не прав?
Цвет надо задавать в СSS. В одном месте. Ваш скрипт должен лишь добавлять/убирать некий служебный класс, обозначающий, что текущее значение — placeholder.
А то в инете огромное кол-во холиваров на тему семантики, разделения данных и представления, а вы предлагаете разделить цветовое оформление между CSS и JS.
Поймите, пожалуйста, что скрипт написан так, чтобы можно было просто задать поле и просто написать текст. Больше ни о чём не задумываться, нигде не прописывать атрибуты и не трогать CSS-стили. Остальные опции необязательны и вынесены просто для того, чтобы указать, что они вообще есть. Я уверен, что в большинстве случаев они вообще не будут использованы.
Зачем так писать? Что мешает по событию DOMReady пройтись по всем элементам форм на странице и обработать атрибут placeholder? Работа со скриптом будет ограничиваться только одной строчкой подключения самого скрипта (<script src="">) и несколькими строчками в CSS.
Вы упустили работу с полем password и замену класса placeholded.
Возможно, что сайтам, работающим с браузерами IE6 или, не дай Бог, ниже, понадобится отключение работы с полями type=«password».
А быть может, что нужно будет задать всем полям (а их, допустим, 25) плейсхолдер навроде «Это поле #%d», а текстом редактировать лень — помогает такая вещь:
$(".some_inputs").each(function(i){ $(this).blurfocus('Это поле #' + i); });
ИМХО, название PlaceHolder — не самое подходящее для атрибута. Для этой функциональности больше подходит название Watermark. Плэйсхолдер дословно переводится как «хранитель места», т.е. контейнер, который хранит какую-то область. В ASP.NET именно так и называется соответствующий контрол.
зачем-то форме присваивает класс «placeholded».
к тому же проверку сабмита, дабы не посылать текст плейсхолдера, можно попроще сделать: по сабмиту проверять равно ли валуе плейсхолдеру, зачем городить огород
Насчёт присваивания класса: да, теперь это выглядит негоже. Он нужен был для определения, что форма была уже обработана. Теперь эта информация хранится в данных ($.data()).
Насчёт огорода: обработка событий нужена для того, чтобы функции, которые так или иначе проверяют поле на правильность (ввода email, к примеру), также получали пустые значения вместо плесхолдерных.
Этот плагин всё же не работает с полями type=«password» так, как об этом говорит спецификация атрибута placeholder в HTML5. К тому же, валидаторы форм с этим плагином будут получать в полях текст плейсхолдера, а не чего-то ещё.
Плейсхолдер