Если вы хотите сделать это без использования jquery или моденизатора, вы можете использовать следующий код:
(function(){
"use strict";
function trim(string){
return string.trim ? string.trim() : string.replace(/^\s+|\s+$/g, "");
}
function hasClassName(element, className){
var elClassName = element.className;
if(!elClassName)
return false;
var regex = new RegExp("(^|\\s)" + className + "(\\s|$)");
return regex.test(element.className);
}
function removeClassName(element, className){
var elClassName = element.className;
if(!elClassName)
return;
element.className = elClassName.replace(
new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ');
}
function addClassName(element, className){
var elClassName = element.className;
if(elClassName)
element.className += " " + className;
else
element.className = className;
}
var addEvent = document.addEventListener ?
'addEventListener' : 'attachEvent';
var eventPrefix = document.addEventListener ? '' : 'on';
var placeHolderClassName = 'usingPlaceHolder';
window.placeHolder = function(textField){
if('placeholder' in document.createElement('input'))
return;
var placeHolder = textField.getAttribute('placeholder');
if(!placeHolder)
return;
placeHolder = trim(placeHolder);
if(placeHolder === '')
return;
var onBlur = function(){
if(textField.value !== '')
return;
textField.value = placeHolder;
addClassName(textField, placeHolderClassName);
};
textField[addEvent](eventPrefix + 'blur', onBlur, false);
textField[addEvent](eventPrefix + 'focus', function(){
if(hasClassName(textField, placeHolderClassName)){
removeClassName(textField, placeHolderClassName);
textField.value = "";
}
}, false);
var form = textField.form;
if(form){
form[addEvent](eventPrefix + 'submit', function(){
if(hasClassName(textField, placeHolderClassName))
textField.value = '';
}, false);
}
onBlur();
};
}());
Для каждого текстового поля, которое вы хотите использовать, вам нужно запустить его placeHolder(HTMLInputElement)
, но я думаю, вы можете просто изменить это по своему усмотрению! Кроме того, выполнение этого способа, а не только при загрузке, означает, что вы можете заставить его работать для входных данных, которых нет в DOM при загрузке страницы.
Обратите внимание, что это работает путем применения класса: usingPlaceHolder
к элементу ввода, поэтому вы можете использовать его для его стилизации (например, добавьте правило, .usingPlaceHolder { color: #999; font-style: italic; }
чтобы он выглядел лучше).