WordPress 搜索框添加文字提示
在浏览网页的时候, 我们经常会看到很多人在他们网站的搜索栏里显示文字提示, 当鼠标点击搜索栏, 则提示信息消失. 如在 Nicky 的博客中, 我发现了下图中的搜索栏.

在搜索栏中添加这样的提示信息, 可以引导访客对网站进行搜索, 对技术类, 分享类网站尤其有效.
为了保持良好的用户体验, 我们一般会在搜索之后保留上次搜索的关键字, 如下图是搜索 'WordPress' 关键字之后搜索栏的状态.

关于搜索框,我认为有以下几点需要注意
(1) 在建立搜索框的时候, value 的值应该是关键字传值, 而不是搜索栏提示. 或许你会说, 很多人都将提示作为搜索栏的初始内容, 但我认为是不好的. 而 Google 和百度都是将上次搜索的关键字作为搜索栏初始化内容的. 所以我建议在有关键字的时候显示关键字, 没关键字的时候显示提示.
(2) 如果输入框没有关键字内容, 当鼠标点击搜索输入框的时候, 我们要让提示信息消失; 而当鼠标离开输入框时, 重新显示提示. 这就要求对输入信息进行判断, 如何判断? 最简单的方法是对比字符串, 所以这要求我们用一些不常用的文字串作为提示, 切记使用 "Search" 和 "搜索" 这些可能成为关键字的文字串作为提示.
(3) 如果搜索栏还提供一个提交按钮, 那么在点击提交按钮的时候也要对搜索框内容进行检测, 如果是提示信息, 则不进行搜索.
用 JavaScript 实现搜索框提示信息
下面是我在自用的 iNove 主题上添加提示信息的 jQuery 代码, 请留意代码注释.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | jQuery(document).ready( function(){ // 当鼠标聚焦在搜索框 jQuery('#searchbox .textfield').focus( function() { // 如果搜索框的内容是 "Type text to search here...", 文字颜色变深, 内容清空. if(jQuery(this).val() == 'Type text to search here...') { jQuery(this).css({color:"#555"}).val(''); } } // 当鼠标在搜索框失去焦点 ).blur( function(){ // 如果搜索框的内容是空, 则文字颜色变浅, 显示 "Type text to search here..." 字样. if(jQuery(this).val() == '') { jQuery(this).css({color:"#999"}).val('Type text to search here...'); } } ); // 当点击搜索按钮时 jQuery('#searchbox .button').click( function() { // 如果搜索框内容是 "Type text to search here..." 或者是空, 不进行任何操作. if(jQuery('#searchbox .textfield').val() == '' || jQuery('#searchbox .textfield').val() == 'Type text to search here...') { return false; // 否则提交并进行搜索 } else { jQuery(this).submit(); } } ); // DOM 加载完毕时发生的事件 jQuery( function() { // 如果搜索框内容是 "Type text to search here..." 或者是空, 文字颜色变浅, 显示 "Type text to search here..." 字样. if(jQuery('#searchbox .textfield').val() == '' || jQuery('#searchbox .textfield').val() == 'Type text to search here...') { jQuery('#searchbox .textfield').css({color:"#999"}).val('Type text to search here...'); } } ); } ) |
原理很简单, 用纯 JS 实现只是为了维护方便, 你可以选择其他方法. 我并没有在发布的主题中添加这个功能是因为 JS 实现的代码做不了国际化, 实在有点尴尬. 如果你真的喜欢, 可以自己尝试实现一下.
声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: WordPress 搜索框添加文字提示

@CHINACC
应该会比较麻烦, 这样的话, 可以做成个插件了.
@dreamtale
Yeah, you are right!
neoease.com 的PR 怎么从7降到4啦?
neoease.com 原来的PR是7吗?
你导航栏的效果很炫啊,可以告诉我是如何实现吗
站长真厉害!想申请链接,多向你学习下!
网站名:逍遥山庄
网址:http://www.mcvb.cn
贵站链接已经做好!
@蓝兔
因为我长得帅.
@WOordPress8.ORG
是的, 我会重返 PR7 的. 哇哈哈~
@dreamtale
http://www.neoease.com/lavalamp-for-wordpress-users/
@逍遥云中仙
不好意思, 我不交换链接.
@怪鸟
颜色改得很好!
mg12你用的是評論分布插件嗎 我想在不用插件的前提下讓評論提交后不用刷新網頁 該怎麼做?
笑翻我了 嘎嘎嘎
PS:那個Maxter太好玩了
忘記說 我不想借助插件 只要借助代碼 插件要讓我瘋了
试试openid
居然还可以改
@Maxter
I am sorry about that, I have no enough time to translate all the articles to English, but I will build a English blog when I free.
@sinner
(- -!) 朋友, 你就别折腾我了. 我以前在自己博客实现了, 人家说喜欢我就做成了插件, 现在你又说不想用插件... 干啥不喜欢插件? 如果你确定要不用插件实现, 你可以参考我的插件代码, 或者将整个插件的代码拷贝到 function.php 中去.
@Maxter
Hey, I will add the feature to all the themes which I released, wait please.
@mg12
你那插件我找遍了你的plugin標簽也沒看到
mg12, english please!
凭老大出品的东西,PR感觉应该有7的!
@sinner
那可能你现在用的 WordPress 不是 2.7.x, 主题不支持嵌套回复, 或者主题没有提供回调函数.
@WordPress8.ORG
hah~
感谢 mg12 的分享,关于无法国际化的问题我倒是有一个方法,就是把文字提示的值保存在搜索框的 title 属性里,然后在添加文字提示的时候通过 JavaScript 取出。另外我想了另一个办法来实现文字提示框,有兴趣可以看看 http://www.paopao.name/programme/javascript/wordpress-searchbox-text-prompt.html
@paopao
其实已经解决了这个问题, 下个版本会集成这个功能. 我是在 PHP 传过去的.
贵站链接已经做好!
这个功能我还是没做出来,这里还有很多东西要学啊,期待 mg12多写点这方面技术的文章,评论提交成功能设置一个成功页面么?做过广告之类的…