我想知道是否有一种简单的方法使用 javascript(包括我们在网站上使用的 JQuery)将描述性文本放入文本输入中,直到用户单击它来输入他们自己的文本。
例如,我想将“搜索”一词放在文本输入中(最好是比实际输入更浅的颜色),直到用户单击输入,当它消失并允许他们输入搜索词时。
不过,我实际上不想让“搜索”这个词成为文本输入的值,因为用户可以搜索“搜索”这个词有点重要。
我正在考虑绝对定位一个 <p> 元素,并在输入上使用单词搜索并在单击它(或输入)时将其隐藏。
你怎么看?这是可怕的误导吗?
我想知道是否有一种简单的方法使用 javascript(包括我们在网站上使用的 JQuery)将描述性文本放入文本输入中,直到用户单击它来输入他们自己的文本。
例如,我想将“搜索”一词放在文本输入中(最好是比实际输入更浅的颜色),直到用户单击输入,当它消失并允许他们输入搜索词时。
不过,我实际上不想让“搜索”这个词成为文本输入的值,因为用户可以搜索“搜索”这个词有点重要。
我正在考虑绝对定位一个 <p> 元素,并在输入上使用单词搜索并在单击它(或输入)时将其隐藏。
你怎么看?这是可怕的误导吗?
我最近遇到了jQuery Form Example 插件,它可以满足您的需求。该项目的 github 页面在这里。使用该插件,您可以显示一个占位符值,该值将在点击时消失,只需:
$('input#search').example('Search');
您可以将搜索输入的初始值设置为“搜索”,然后添加一个 onClick 侦听器将其移除。
$("input.search-term").one("click", function() { $(this).removeAttr("value"); });
它不会影响用户搜索“搜索”的能力。这是一种比尝试在输入上修改 a<p>或<label>元素更简洁的方法。
编辑:你是绝对正确的 - 删除每次点击的价值是糟糕的用户体验。这就是我快速回答的原因。:) 更新为仅删除初始值。
你可能想看看这个:http: //www.newmediacampaigns.com/page/nmcformhelper
基本上,HTML 5支持输入元素的占位符属性:
<input type="text" placeholder="Your browser supports placeholder text" size=38>
WebKit(Chrome 和 Safari)现在支持这个,但是对于 Firefox 和 IE 等其他浏览器,当浏览器不支持 HTML 5 功能时,您可以使用此脚本模拟使用 Javascript 的效果。
不过,我实际上不想让“搜索”这个词成为文本输入的值,因为用户可以搜索“搜索”这个词有点重要。
在这种情况下,您可以在文本输入上使用背景图像。您可以在 CSS 中定义 :focus 不应该有背景,而 unfocused 应该有它。即使禁用了 javascript,此解决方案也有效。
更新:测试和使用 FF、Opera 和 Chrome 但不是 IE,因为 IE 不支持:focus,但 IE 支持背景图像,所以如果文本是浅灰色的应该不是问题。而且您始终可以使用 jquery 来更改输入字段应具有的分类。
不久前我正在寻找这个解决方案并遇到了这个
/**
* @author Remy Sharp
* @url http://remysharp.com/2007/01/25/jquery-tutorial-text-box-hints/
*/
(function ($) {
$.fn.hint = function (blurClass) {
if (!blurClass) {
blurClass = 'blur';
}
return this.each(function () {
// get jQuery version of 'this'
var $input = $(this),
// capture the rest of the variable to allow for reuse
title = $input.attr('title'),
$form = $(this.form),
$win = $(window);
function remove() {
if ($input.val() === title && $input.hasClass(blurClass)) {
$input.val('').removeClass(blurClass);
}
}
// only apply logic if the element has the attribute
if (title) {
// on blur, set value to title attr if text is blank
$input.blur(function () {
if (this.value === '') {
$input.val(title).addClass(blurClass);
}
}).focus(remove).blur(); // now change all inputs to title
// clear the pre-defined text when form is submitted
$form.submit(remove);
$win.unload(remove); // handles Firefox's autocomplete
}
});
};
})(jQuery);
$(function(){
// find all the input elements with title attributes
$('input[title!=""]').hint();
});
我会在 jQuery 中做这样的事情:
$("input.searchterm").click(function() {
var $input = $(this);
if ($input.val() == "enter search term") $input.val("");
};
这样用户在再次点击时不会丢失他们之前输入的内容。只有当它是您分配给输入字段的默认值时,该值才会被清除。
作为参考,这种技术通常称为水印。