Способов я знаю несколько, все под IE.
Достаточно простой способ есть под IE5+.
Допустим, у Вас в документе такая форма:
В ставите указатель, связывающий нужную Вам функцию с событием onbeforeeditfocus в документе. Это событие появляется только в IE5, насколько я знаю. Других событий с фокусом в документе в целом я не знаю.
До этого определяете функцию для фокуса
function textOnOff()
{
var srcEl=event.srcElement;
srcEl.value=srcEl.name;
}
Для блюра событий в документе я не знаю, поэтому в той же функции перед рисованием текста очищаем все, что нужно (в форме):
function textOnOff()
{
var srcEl=event.srcElement;
var curForm=srcEl.form;
for(na=0;na {
curForm.elements[na].value="";
}
srcEl.value=srcEl.name;
}
Для IE4 все то же самое, только заменяем событие onbeforeeditfocus на события, которые он понимает - onclick, и делаете проверку на то, что текущий элемент - элемент формы. Чтобы учесть табуляцию включаете событие onkeydown и event.keyCode (для клавиши Tab он равен 9). Обратите внимание, что при связывании с функцией событие пишится в нижнем регистре, а имя функции без ().
Еще один способ - связывание функции с элементом в форме, благо там события onfocus и onblur есть. Только делать это нужно уже после того, как формы со всеми элементами заданны.
Определяем две функции
function textOn()
{
this.value=this.name;
}
function textOff()
{
this.value="";
}
В документе после Ваших форм (если их много)
размещается блок
Интересно, что в этом случае this в функции относится к текущему элементу в форме. Почему?