【发布时间】:2023-04-09 05:09:01
【问题描述】:
通常当我们使用输入占位符时,占位符文本会在用户输入内容后立即消失。
我正在考虑给用户一个关于输入的随机示例,以便用户可以使用占位符进行模仿。问题是,当用户键入某些内容时,该示例将消失。当用户键入占位符文本的开头部分时,有什么方法可以使占位符保持可见?
这是一个例子
占位符文本是“Lorem ipsum dolor sit amet”。当用户键入“Lorem ipsum”时,我假设用户将尝试键入示例,以便文本仍然可见。但是当用户输入像“Lorem dolor”这样的其他内容时,我假设用户会尝试输入与示例不同的内容。但是,如果结果是用户按下了错误的按钮,则在用户按下“退格”后,占位符文本将再次可见,直到输入文本再次成为占位符部分(例如,用户删除“dolor”文本并且输入文本返回到“ Lorem')。
实际上我目前使用自动完成下拉菜单作为替代,但我很好奇这是否可以使用 Javascript(最好是 jQuery)来完成。
更新
这是我所能得到的。我正在考虑克隆一个与文本输入具有相同样式的元素。
类似的东西
var textinput = $('#textinput');
var textplaceholder = $('<span>');
var placeholdertext = textinput.attr('placeholder');
textinput.attr('placeholder', '');
textplaceholder.insertAfter(textinput);
textplaceholder.html(placeholdertext);
textplaceholder.copyCSS(textinput);
textinput.keyup(function() {
var current = $(this).val();
if(placeholdertext.substr(0, current.length) == current){
textplaceholder.html(placeholdertext);
} else {
textplaceholder.html(current);
}
});
这是小提琴http://jsfiddle.net/petrabarus/FDS88/
问题是如何使元素出现在输入文本的正后方,使文本在每个浏览器中看起来对齐,并模拟鼠标交互(即当文本聚焦时边框发光等)?
【问题讨论】:
-
向我们展示您到目前为止所做的代码?谢谢。
-
在文本框后面放置一个
div以创建该效果。然而,有很多方法可以做到这一点,例如启用 contentEditable 的span并在其后放置灰色文本:jsfiddle.net/DerekL/7sD2r -
@Derek:这其实是一个很不错的想法,值可以放在一个隐藏的输入里面。
-
@PetraBarus - 全部完成:jsfiddle.net/DerekL/7sD2r
标签: javascript jquery html css