хорошо, сегодня я делаю помощника функцией HTML. Это похоже на это:
function Input($name,$type,$lable,$value= null){
if (isset($value)) {
//if (this.value=='search') this.value = ''
echo '';
}
if (!isset($value)) {
echo '';
}
}
Как Вы видите при вставке значения, оно сделает некоторый JavaScript так, чтобы, когда я нажимаю поле, текст в поле исчез,
Вопрос: Как может мы добираться иметь значение, когда мы не находимся на входе? (посмотрите на поле поиска на stackoverflow, однако тот, который находится на stackoverflow, не возвращается после того, как мы не указываем на поле ввода? Возможно, при помощи onblur?Я прав?
Надежда Вы понимаете то, что я имею в виду.
хорошо, потому что некоторые из Вас не получают то, что я имею в виду, посмотрите
когда я не нажимаю его.
когда я нажимаю его.
когда я не нажимаю его снова.
это должно быть
когда я не нажимаю его.
когда я нажимаю его.
когда я не нажимаю его снова.
Вы хотите этого
<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;
Если я правильно понимаю, 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.
РЕДАКТИРОВАТЬ: игнорировать этот ответ. До редактирования было непонятно, в чем был вопрос.
Если посмотреть на источник этой страницы, можно увидеть следующее
<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>