我希望网页上的搜索框以灰色斜体显示单词“搜索”。当框获得焦点时,它应该看起来像一个空的文本框。如果其中已经有文本,则应正常显示文本(黑色,非斜体)。这将帮助我通过除去标签来避免混乱。
顺便说一句,这是页面上的Ajax搜索,因此没有按钮。
我希望网页上的搜索框以灰色斜体显示单词“搜索”。当框获得焦点时,它应该看起来像一个空的文本框。如果其中已经有文本,则应正常显示文本(黑色,非斜体)。这将帮助我通过除去标签来避免混乱。
顺便说一句,这是页面上的Ajax搜索,因此没有按钮。
Answers:
如果您很高兴只对较新的浏览器拥有此功能,那么另一个选择是使用HTML 5的placeholder属性提供的支持:
<input name="email" placeholder="Email Address">
在没有任何样式的情况下,Chrome中的外观如下:
您可以在此处以及使用CSS的HTML5占位符样式中进行演示。
请务必检查 此功能浏览器兼容性。3.7中添加了对Firefox的支持。铬很好。Internet Explorer仅在10中添加了支持。如果定位的浏览器不支持输入占位符,则可以使用称为jQuery HTML5 Placeholder的jQuery插件,然后只需添加以下JavaScript代码即可启用它。
$('input[placeholder], textarea[placeholder]').placeholder();
这就是所谓的文本框水印,它是通过JavaScript完成的。
或者,如果您使用jQuery,则更好的方法是:
您可以使用HTML中的属性设置占位符(浏览器支持)。的placeholder
font-style
和color
可以用CSS改变(虽然浏览器的支持是有限的)。
input[type=search]::-webkit-input-placeholder { /* Safari, Chrome(, Opera?) */
color:gray;
font-style:italic;
}
input[type=search]:-moz-placeholder { /* Firefox 18- */
color:gray;
font-style:italic;
}
input[type=search]::-moz-placeholder { /* Firefox 19+ */
color:gray;
font-style:italic;
}
input[type=search]:-ms-input-placeholder { /* IE (10+?) */
color:gray;
font-style:italic;
}
<input placeholder="Search" type="search" name="q">
您可以使用JavaScript 添加和删除特殊的CSS类并修改输入值onfocus
/ onblur
:
<input type="text" class="hint" value="Search..."
onfocus="if (this.className=='hint') { this.className = ''; this.value = ''; }"
onblur="if (this.value == '') { this.className = 'hint'; this.value = 'Search...'; }">
然后使用您想要的CSS样式指定提示类,例如:
input.hint {
color: grey;
}
最好的方法是使用jQuery或YUI之类的JavaScript库连接JavaScript事件,并将代码放入外部.js文件中。
但是,如果您想要一个快速而又肮脏的解决方案,这是您的内联HTML解决方案:
<input type="text" id="textbox" value="Search"
onclick="if(this.value=='Search'){this.value=''; this.style.color='#000'}"
onblur="if(this.value==''){this.value='Search'; this.style.color='#555'}" />
更新:添加了所需的着色材料。
我前一段时间在我的网站上发布了一个解决方案。要使用它,请导入一个.js
文件:
<script type="text/javascript" src="/hint-textbox.js"></script>
然后使用CSS类注释您想要提示的任何输入hintTextbox
:
<input type="text" name="email" value="enter email" class="hintTextbox" />
此处提供更多信息和示例。
这是一个带有Google Ajax库缓存和jQuery魔术的功能示例。
这将是CSS:
<style type="text/stylesheet" media="screen">
.inputblank { color:gray; } /* Class to use for blank input */
</style>
这将是JavaScript代码:
<script language="javascript"
type="text/javascript"
src="http://www.google.com/jsapi">
</script>
<script>
// Load jQuery
google.load("jquery", "1");
google.setOnLoadCallback(function() {
$("#search_form")
.submit(function() {
alert("Submitted. Value= " + $("input:first").val());
return false;
});
$("#keywords")
.focus(function() {
if ($(this).val() == 'Search') {
$(this)
.removeClass('inputblank')
.val('');
}
})
.blur(function() {
if ($(this).val() == '') {
$(this)
.addClass('inputblank')
.val('Search');
}
});
});
</script>
这将是HTML:
<form id="search_form">
<fieldset>
<legend>Search the site</legend>
<label for="keywords">Keywords:</label>
<input id="keywords" type="text" class="inputblank" value="Search"/>
</fieldset>
</form>
我希望这足以使您对GAJAXLib和jQuery都感兴趣。
现在变得非常容易。在html中,我们可以为输入元素提供占位符属性。
例如
<input type="text" name="fst_name" placeholder="First Name"/>
检查更多详细信息:http : //www.w3schools.com/tags/att_input_placeholder.asp
对于jQuery用户:naspinski的jQuery链接似乎已损坏,但请尝试以下操作:http ://remysharp.com/2007/01/25/jquery-tutorial-text-box-hints/
您可以获得免费的jQuery插件教程作为奖励。:)
我发现jQuery插件jQuery Watermark优于顶部答案中列出的插件。为什么更好?因为它支持密码输入字段。同样,设置水印的颜色(或其他属性)就像.watermark
在CSS文件中创建引用一样容易。
使用jQuery表单通知程序它是最流行的jQuery插件之一,并且不会受到此处其他jQuery建议所做的错误的影响(例如,您可以自由设置水印的样式,而不必担心它是否会保存到数据库)。
jQuery Watermark直接在表单元素上使用单个CSS样式(我注意到,应用于水印的CSS字体大小属性也影响了文本框-不是我想要的)。jQuery Watermark的优点是您可以将文本拖放到字段中(jQuery Form Notifier不允许这样做)。
其他人建议的另一个(在digitalbrush.com上的建议)会不小心将水印值提交到您的表单中,因此我强烈建议您反对。
使用背景图像渲染文本:
input.foo { }
input.fooempty { background-image: url("blah.png"); }
然后,您要做的就是检测value == 0
并应用正确的类:
<input class="foo fooempty" value="" type="text" name="bar" />
jQuery JavaScript代码如下所示:
jQuery(function($)
{
var target = $("input.foo");
target.bind("change", function()
{
if( target.val().length > 1 )
{
target.addClass("fooempty");
}
else
{
target.removeClass("fooempty");
}
});
});
您可以轻松地将一个框显示为“搜索”,然后将焦点更改为它时,将文本删除。像这样:
<input onfocus="this.value=''" type="text" value="Search" />
当然,如果您这样做,则用户自己的文本在单击时会消失。因此,您可能想使用更强大的功能:
<input name="keyword_" type="text" size="25" style="color:#999;" maxlength="128" id="keyword_"
onblur="this.value = this.value || this.defaultValue; this.style.color = '#999';"
onfocus="this.value=''; this.style.color = '#000';"
value="Search Term">
我正在使用一个简单的单行javascript解决方案,效果很好。这是文本框和文本区域的示例:
<textarea onfocus="if (this.value == 'Text') { this.value = ''; }" onblur="if (this.value == '') { this.value = 'Text'; }">Text</textarea>
<input type="text" value="Text" onfocus="if (this.value == 'Text') { this.value = ''; }" onblur="if (this.value == '') { this.value = 'Text'; }">
在对字段值进行任何操作之前,只有“缺点”是在$ _POST或Javascript验证中进行验证。意思是,检查字段的值不是“文本”。
$('input[value="text"]').focus(function(){
if ($(this).attr('class')=='hint')
{
$(this).removeClass('hint');
$(this).val('');
}
});
$('input[value="text"]').blur(function(){
if($(this).val() == '')
{
$(this).addClass('hint');
$(this).val($(this).attr('title'));
}
});
<input type="text" value="" title="Default Watermark Text">
来自http://asp.net的用户AJAXToolkit