单击时HTML字段中的文本消失?

Posted

技术标签:

【中文标题】单击时HTML字段中的文本消失?【英文标题】:Text in HTML Field to disappear when clicked? 【发布时间】:2010-12-10 05:05:54 【问题描述】:

我可以轻松地创建一个包含文本的 html 输入字段。但是当用户点击输入字段时,文本并没有消失,而是停留在那里。然后,用户必须手动删除要键入的文本。如何创建一个输入字段,当用户单击输入字段框时,文本会消失?

【问题讨论】:

This is the modern way to do it. 这里的很多答案已经过时了。 【参考方案1】:

您要做的是使用 HTML5 属性placeholder,它可以让您为输入框设置默认值:

<input type="text" name="inputBox" placeholder="enter your text here">

这应该可以实现您想要的。但是,请注意,因为 Internet Explorer 9 和更早版本不支持 placeholder 属性。

【讨论】:

输入占位符属性在 IE9 和 IE8 中不支持...更多请转至caniuse.com 有没有办法让占位符在用户开始输入时消失,但在字段“聚焦”时不会消失?【参考方案2】:

为此,您可以使用 onfocus 和 onblur 这两个事件:

<input type="text" name="theName" value="DefaultValue"
  onblur="if(this.value=='') this.value='DefaultValue'; this.style.color='#BBB';"
  onfocus="if(this.value=='DefaultValue') this.value=''; this.style.color='#000';"
  style="color:#BBB;" />

【讨论】:

如果用户不输入vlue,它会传递空白值还是默认值?我的用例也与此相同,但我想当用户不输入任何空白值时应该分配我们该怎么做?有什么建议吗?并且不使用占位符属性 @mahesh 你可以做的是添加一个背景图像,上面写着你想要的文本,并添加 onClick 事件监听器,使图像不可见。 如果您仍然需要支持 IE9,这是一个很好的解决方案!谢谢!【参考方案3】:

使用占位符属性。当用户开始输入时,文本会消失。 这是我正在做的一个项目的一个例子:

<div class="" id="search-form">
    <input type="text" name="" value="" class="form-control" placeholder="Search..." >
</div>

【讨论】:

【参考方案4】:

试试这个。

<label for="user">user</label>
<input type="text" name="user" 
onfocus="if(this.value==this.defaultValue)this.value=''"    
onblur="if(this.value=='')this.value=this.defaultValue" 
value="username" maxlength="19" />

希望这会有所帮助。

【讨论】:

如果用户不输入vlue,它会传递空白值还是默认值?我的用例也与此相同,但我想当用户不输入任何空白值时应该分配我们该怎么做?有什么建议吗?并且不使用占位符属性【参考方案5】:

这就像我认为应该解决您所有问题的解决方案一样简单:

<input name="myvalue" id="valueText" type="text" value="ENTER VALUE">

这是您的提交按钮:

<input type="submit" id= "submitBtn" value="Submit">

然后把这个小 jQuery 放到一个 js 文件中:

//this will submit only if the value is not default
$("#submitBtn").click(function () 
    if ($("#valueText").val() === "ENTER VALUE")
    
        alert("please insert a valid value");
        return false;
    
);

//this will put default value if the field is empty
$("#valueText").blur(function () 
    if(this.value == '') 
        this.value = 'ENTER VALUE';
    
); 

 //this will empty the field is the value is the default one
 $("#valueText").focus(function () 
    if (this.value == 'ENTER VALUE') 
        this.value = ''; 
    
);

而且它也适用于旧版浏览器。另外,如果您需要,它可以很容易地转换为普通的 javascript

【讨论】:

感谢它适用于我们必须支持的 IE9。所以我不能使用占位符的东西。为了将文本框中的值设置保留在一个位置,我使用 jQuery 在文档准备好的框中设置值。 $(document).ready(function () /* 加载文档时设置搜索输入框值*/ $('#valueText').val("ENTER VALUE"); 不适用于 Chrome 版本 -->> 版本 81.0.4044.138(官方构建)(64 位)【参考方案6】:

就这么简单:&lt;input type="text" name="email" value="e-mail..." onFocus="this.value=''"&gt;

【讨论】:

【参考方案7】:

这样的事情怎么样?

&lt;input name="myvalue" type="text" onfocus="if(this.value=='enter value')this.value='';" onblur="if(this.value=='')this.value='enter value';"&gt;

这将在第一次聚焦时清除,但在用户输入其值后不会清除后续聚焦,当留空时恢复给定值。

【讨论】:

以上是关于单击时HTML字段中的文本消失?的主要内容,如果未能解决你的问题,请参考以下文章

用户单击输入字段,值消失

UIView 在用户交互后消失

使用 Prototype 使元素出现/消失

在 Ipad 上单击外部时使搜索字段(带有结果)消失

android单击文本框默认文字消失

单击其中的链接后,QTextBrowser 中的 PySide/PyQt 文本消失