Ввод HTML onfocus и onblur?

хорошо, сегодня я делаю помощника функцией 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?Я прав?

Надежда Вы понимаете то, что я имею в виду.

хорошо, потому что некоторые из Вас не получают то, что я имею в виду, посмотрите

когда я не нажимаю его.

alt text

когда я нажимаю его.

alt text

когда я не нажимаю его снова.

alt text

это должно быть

когда я не нажимаю его.

alt text

когда я нажимаю его.

alt text

когда я не нажимаю его снова.

alt text

10
задан Glorfindel 3 August 2019 в 21:04
поделиться

3 ответа

Вы хотите этого

<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;
29
ответ дан 3 December 2019 в 14:05
поделиться

Если я правильно понимаю, 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.

РЕДАКТИРОВАТЬ: игнорировать этот ответ. До редактирования было непонятно, в чем был вопрос.

3
ответ дан 3 December 2019 в 14:05
поделиться

Если посмотреть на источник этой страницы, можно увидеть следующее

<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> 
3
ответ дан 3 December 2019 в 14:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: