Вход в HTML onfocus & onblur?
ok, сегодня я создаю вспомогательную HTML-функцию. Это выглядит так:
function Input($name,$type,$lable,$value= null){
if (isset($value)) {
//if (this.value=='search') this.value = ''
echo '<label for="'. $name .'">'. $lable .'</label><input type="'.$type.'" name="'. $name .'" id="'. $name .'" value="'.$value.'" onfocus="if (this.value==\''.$value.'\') this.value = \'\' "/>';
}
if (!isset($value)) {
echo '<label for="'. $name .'">'. $lable .'</label><input type="'.$type.'" name="'. $name .'" id="'. $name .'" />';
}
}
Как вы можете видеть, если вы вставляете значение, он будет делать некоторый JavaScript, чтобы при щелчке по нему текст внутри поля исчезнет,
Вопрос: Как мы можем заставить его иметь значение, когда мы не на входе? (посмотрите в окне поиска в stackoverflow, однако тот, который находится на stackoverflow, не возвращается после того, как мы не укажем на поле ввода? Возможно, используя onblur? Я прав?
Надеюсь, вы поймете, что я имею в виду.
ok, потому что некоторые из вас не понимают, что я имею в виду
см.
когда im не нажимает на него.
alt text http://img39.imageshack.us/img39/4128/48048759.png
когда я нажимаю на него.
alt text http://img691.imageshack.us/img691/4485/94918020.png
когда im не нажмете его снова.
alt text http://img691.imageshack.us/img691/4485/94918020.png
он должен быть
когда im не нажимает на него.
alt text http://img39.imageshack.us/img39/4128/48048759.png
когда я нажимаю на него.
alt text http://img691.imageshack.us/img691/4485/94918020.png
когда im не нажмете его снова.
alt text http://img39.imageshack.us/img39/4128/48048759.png
Ответы
Ответ 1
Вы хотите это
<input ...
onfocus="if (this.value==this.defaultValue) this.value = ''"
onblur="if (this.value=='') this.value = this.defaultValue" />
Обновление. Некоторые новые браузеры будут делать то, что вы хотите, просто добавив атрибут placeholder:
<input placeholder="Please enter your name" />
Вот PHP в соответствии с вашим кодом
echo <<<END
<label for="$name">$lable</label>
<input type="$type" name="$name" id="$name" value="$value"
onfocus="if (this.value==this.defaultValue) this.value = ''"
onblur="if (this.value=='') this.value = this.defaultValue"/>
END;
Ответ 2
Если я правильно понимаю, SO использует эту строку HTML для выполнения этого эффекта.
<input name="q" class="textbox" tabindex="1" onfocus="if (this.value=='search') this.value = ''" type="text" maxlength="80" size="28" value="search">
Не связано с вашим вопросом, но вы можете и должны заменить свой второй оператор if выражением else.
function Input($name,$type,$lable,$value= null){
if (isset($value)) {
//if (this.value=='search') this.value = ''
echo '<label for="'. $name .'">'. $lable .'</label><input type="'.$type.'" name="'. $name .'" id="'. $name .'" value="'.$value.'" onfocus="if (this.value==\''.$value.'\') this.value = \'\' "/>';
}
else {
echo '<label for="'. $name .'">'. $lable .'</label><input type="'.$type.'" name="'. $name .'" id="'. $name .'" />';
}
}
Потому что если isset ($ value) возвращает false, то вы знаете, что он не установлен, поскольку он может возвращать только одно из двух значений: true или false.
EDIT: проигнорируйте этот ответ. Было непонятно, какой вопрос был перед редактированием.
Ответ 3
Глядя на источник этой страницы, вы увидите следующее
<form id="search" action="/search" method="get">
<div>
<input name="q" class="textbox" tabindex="1"
onfocus="if (this.value=='search') this.value = ''"
type="text" maxlength="80" size="28" value="search">
</div>
Ответ 4
Или это, если вы хотите, чтобы он изменил значение по умолчанию независимо от того, какой текст был введен...
<input ...
onfocus="if (this.value==this.defaultValue) this.value = ''"
onblur="if (this.value!=this.defaultValue) this.value = this.defaultValue" />
Ответ 5
Попробуйте это. Может быть, это может вам помочь:
<form action="/search" method="get">
<input type="text" name="q" value="Search..." onfocus="if (this.value == 'Search...') (this.value='')" onblur="if (this.value == '') (this.value='Search...')" />