Ponieważ większość rozwiązań korzysta z jQuery lub nie jest tak satysfakcjonująca, jak sobie tego życzyłem, napisałem dla siebie fragment kodu mootools.
function fix_placeholder(container){
if(container == null) container = document.body;
if(!('placeholder' in document.createElement('input'))){
var inputs = container.getElements('input');
Array.each(inputs, function(input){
var type = input.get('type');
if(type == 'text' || type == 'password'){
var placeholder = input.get('placeholder');
input.set('value', placeholder);
input.addClass('__placeholder');
if(!input.hasEvent('focus', placeholder_focus)){
input.addEvent('focus', placeholder_focus);
}
if(!input.hasEvent('blur', placeholder_blur)){
input.addEvent('blur', placeholder_blur);
}
}
});
}
}
function placeholder_focus(){
var input = $(this);
if(input.get('class').contains('__placeholder') || input.get('value') == ''){
input.removeClass('__placeholder');
input.set('value', '');
}
}
function placeholder_blur(){
var input = $(this);
if(input.get('value') == ''){
input.addClass('__placeholder');
input.set('value', input.get('placeholder'));
}
}
Wyznaję, że wygląda trochę WIĘCEJ niż inne, ale działa dobrze.
__placeholder jest klasą ccs, która nadaje fantazyjny kolor tekstu zastępczego.
Użyłem fix_placeholder w window.addEvent ('domready', ... i dla każdego dodatkowego kodu, takiego jak wyskakujące okienka.
Mam nadzieję że ci się spodoba.
Z poważaniem.
<input>
); atrybut to para klucz-wartość wewnątrz ostrych nawiasów (jakplaceholder="This is an attribute value"
). Pozostaw pytanie tak, jak jest, aby przyszli ludzie, którzy zadają to samo pytanie, mogli je znaleźć.