具有占位符/提示和焦点的文本字段 - 可能吗?

Posted

技术标签:

【中文标题】具有占位符/提示和焦点的文本字段 - 可能吗?【英文标题】:Text field with both a placeholder/hint AND focus - possible? 【发布时间】:2011-12-15 09:29:22 【问题描述】:

我们进行了一项调查,其中某些页面只有一个 textarea 问题。由于它是唯一的输入,我们希望它专注于该框的 onload。但我们也希望在同一个文本区域中有一个占位符样式的文本。

有很多解决方案可以让这两个功能在所有浏览器上都运行,例如this one by Ajaxblender。但我希望提示在焦点后保留,然后在输入文本时消失。有什么想法吗?

注意 - 我意识到 html 规范声明占位符元素应该在焦点上消失。所以也许我应该说我想要一个“水印”。此用户界面适用于计算机知识水平较低的老年男性 - 他们需要我们能够提供的任何帮助。

必须使用 IE8 :(

【问题讨论】:

【参考方案1】:

如果我理解了这个问题,您可以尝试类似

HTML

<textarea id="first">Instructions go here</textarea>

jQuery

$('#first').focus().one('keydown', function()
    $(this).val('');    
);

示例:http://jsfiddle.net/jasongennaro/AYRyH/

说明

    空的.focus() 将焦点放在onload 字段上。 .one() 为元素触发一次事件 在keydown 上,我们删除当前值,这是我们在开头添加的指令。

编辑

鉴于您的评论

我需要它更像一个标准的占位符 但是,所以如果您输入某些内容,则将其删除,以便该字段为 空白,它会返回显示原始提示。

您可以这样做...捕获value,然后将其放回blur 上的textarea(如果那里没有任何内容)。

var a = $('#first').val();

$('#first').focus().one('keydown', function()
    $(this).val('');    
);

$('#first').blur(function()
    if($(this).val() == '')
       $(this).val(a); 
    
)

示例 2: http://jsfiddle.net/jasongennaro/AYRyH/1/

【讨论】:

谢谢,这正是我想要的方向。我需要它的功能更像一个标准占位符,所以如果你输入一些内容,然后删除它,使该字段为空白,它会返回显示原始提示。

以上是关于具有占位符/提示和焦点的文本字段 - 可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Firefox 的材料设计输入字段占位符屏幕阅读器问题?

如何为设置包的文本字段提供占位符(Root.plist)

IE 10, 11. 如何防止使用占位符的文本输入触发焦点输入事件?

在焦点上更改占位符文本

如何在 HTML5 的数字输入中显示占位符的文本

当输入字段处于焦点时,占位符不会消失