HTML 输入 onfocus 和 onblur?

Posted

技术标签:

【中文标题】HTML 输入 onfocus 和 onblur?【英文标题】:HTML input onfocus & onblur? 【发布时间】:2011-03-20 18:30:47 【问题描述】:

好的,今天我正在制作一个帮助 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,这样当我单击框时,框内的文本就会消失,

问题:当我们不在输入时,我们如何使它具有价值? (请查看***上的搜索框,但是***上的搜索框在我们不指向输入框后就不会回来?也许是通过使用onblur?我说的对吗?

希望你明白我的意思。

好的,因为你们中的一些人没有明白我的意思 请看

当我没有点击它时。

当我点击它时。

当我不再点击它时。

应该是

当我没有点击它时。

当我点击它时。

当我不再点击它时。

【问题讨论】:

感谢 gertG 的修复。 您的图片消失了。你应该上传它们 【参考方案1】:

你想要这个

<input ...
onfocus="if (this.value==this.defaultValue) this.value = ''"
onblur="if (this.value=='') this.value = this.defaultValue" />

更新:一些较新的浏览器只需添加占位符属性即可完成您想要的操作:

<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;

【讨论】:

是的,它应该看起来像这个:),让我先研究一下:) 还有一些问题。 echo '&lt;label for="'. $name .'"&gt;'. $lable .'&lt;/label&gt;&lt;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" /&gt;'; 会像 &lt;input type="text" this.value="this.defaultValue&amp;quot;" (this.value="='')" if="" onfocus="if (this.value==this.defaultValue) this.value = '' onblur=" value="awdwadaw" id="name" name="name"&gt; echo '&lt;label for="'. $name .'"&gt;'. $lable .'&lt;/label&gt;&lt;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" /&gt;'; 工作!谢谢【参考方案2】:

查看此页面的源代码显示以下内容

<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> 

【讨论】:

您接受了一个答案。你为什么还在研究它?这是 SO 使用的确切代码。它的行为与您在本网站上看到的完全一样。【参考方案3】:

如果我理解正确,那么 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,那么您就知道它没有设置,因为它只能返回两个值之一,真或假。

编辑:忽略这个答案。在编辑之前不清楚问题是什么。

【讨论】:

【参考方案4】:

或者,如果您希望无论输入什么文本都将其更改回默认值...

<input ... 
onfocus="if (this.value==this.defaultValue) this.value = ''" 
onblur="if (this.value!=this.defaultValue) this.value = this.defaultValue" />

【讨论】:

你到底为什么要这么做?那你不妨把它设为只读。 也许您更愿意:&lt;input ... onfocus="if (this.value==this.defaultValue) this.value = ''" onblur="if (this.value!='') this.value = this.defaultValue" /&gt; 这样,当input 失去焦点时,如果没有输入任何文本,您就可以返回文本。【参考方案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...')" />

【讨论】:

以上是关于HTML 输入 onfocus 和 onblur?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript基础 表单内的text文本输入框 获得焦点onfocus 失去焦点onblur

onblur事件和onfocus事件失效

[TimLinux] JavaScript input框的onfocus/onblur/oninput/onchange事件介绍

onFocus 和 onBlur 不起作用,反应原生

PHP 搜索表单与onblur和onfocus文本

JavaScript:onblur与onfocus区别