- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章jquery+php实现搜索框自动提示由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
今天突然想给本站做个搜索页面,这样用户可以通过搜索来找到自己喜欢的内容,也避免了在海量信息中手动查找资源的麻烦,我的目标和百度首页的效果类似,当用户输入要搜索的文字时,我们在下方给出相关的十条信息,如果用户要找的就是这十条信息内的某一条,那么简单,直接点击就可在新页面中打开页面,主要就是想更人性化一点,让用户使用起来更方便.
先看一下效果图吧,这样更有动力,要不然大家还不知道我在讲什么,到底要达到什么样的效果! 。
jquery+php实现搜索框自动提示 。
下面先主要讲解原理:
在search.html页面中,用户在搜索框内输入“j”时,使用javascript获取搜索框的文本内容,到数据库中查找相关的内容并返回,再使用javascript将服务器返回的结果显示在搜索框下面的提示框内,供用户参考选择.
具体的实现方法:
首先在页面中做好搜索框、搜索按钮、显示搜索提示的层,如下代码 。
1
2
3
4
|
<
div
id
=
"search"
>
<
input
type
=
"text"
name
=
"k"
class
=
"k"
/> <
input
type
=
"button"
name
=
"s"
value
=
"搜索"
/>
</
div
>
<
div
id
=
"search_auto"
></
div
>
|
使用浏览器浏览页面,会看到下图的效果 jquery+php实现用户输入搜索内容时自动提示 看起来很普通,没什么样式,现在稍作样式上的调整 。
1
2
|
#search{
font-size
:
14px
;}
#search .k{
padding
:
2px
1px
;
width
:
320px
;}
/*将搜索框宽度设置大点*/
|
再将显示搜索提示的层样式调整一下,由于搜索提示层在搜索框正下方,所以我们设置其定位方式为绝对定位 。
定位方式*/ 接着用JS将搜索提示层的位置放置在搜索框正下方,且宽度和搜索框相同,这里我们采用jQuery来解决 。
。
。
搜索提示层的位置和宽度已经确定好了,由于在用户没有输入搜索文字前这个提示框是不显示的,所以我们先要将它设置成隐藏,在提示层的样式里加上display:none将其隐藏.
已经全部OK了,现在只要给搜索框的onkeyup注册事件即可,我们依然采用jQuery来处理,在jQuery中是keyup 。
1
2
3
4
5
6
|
$(
'#search input[name="k"]'
).keyup(
function
(){
$.post(
'search_auto.php'
,{
'value'
:$(
this
).val()},
function
(data){
//向服务器上的search_auto.php发送post数据,$.post是jQuery的方法
if
(data==
'0'
) $(
'#search_auto'
).html(
''
).css(
'display'
,
'none'
);
//判断服务器上返回的数据,如果等于0,则表示没有找到相关的内容,所以将提示框的内容清空并隐藏
else
$(
'#search_auto'
).html(data).css(
'display'
,
'block'
);
//如果服务器上返回的数据不等于0,则将返回的内容放到提示框内并显示提示框
});
});
|
上面客户端已经做好了,已经可以将用户输入的内容发送到服务器端,并响应服务器的返回值。 那么服务器端如何处理客户端发送来的数据呢,下面用PHP来举个例子 。
1
2
3
4
5
6
7
8
9
|
<?php
$v
=
$_POST
[value];
$re
=mysql_query(
"select * from test where title like '%$v%' order by addtime desc limit 10"
);
//根据客户端发送来的数据,到数据库中查询10条相关的结果
if
(mysql_num_rows(
$re
)<=0)
exit
(
'0'
);
//判断查询结果,如果没有相关的结果,那么直接返回0
echo
'<ul>'
;
while
(
$ro
=mysql_fetch_array(
$re
))
echo
'<li><a href="">'
.
$ro
[title].
'</a></li>'
;
//将查询得到的相关结果的标题输出,这个地方需要注意,由于通过jQuery的ajax技术返回的文本是UTF-8编码,所以如果$ro[title] 中包含中文,一定要记得用PHP的iconv或其它函数将其转换成UTF-8编码,否则在页面中看到的会是一串乱码
echo
'<li class="cls"><a href="javascript:;" onclick="$(this).parent().parent().parent().fadeOut(100)">关闭</a& gt;</li>'
;
//输入一个关闭按钮,让用户不想看到提示层时可以点击关闭,关闭按钮采用jQuery,解释一下,当前点击的按钮是$(this),一直向上找到其第三个父元素,让它逐渐消失
echo
'</ul>'
;
?>
|
现在服务器已经可以正确的执行我们发送过去的数据了,并且返回相应的结果,那么现在在搜索框内输入一个文字测试一下吧,但前提是你的数据库中得有与这个文字相关的内容啊,要不然你也看不到提示框的出现,因为没有相关提示内容啊,呵呵.
可是还有点美中不足,那就是提示框里面的内容不美观,和我们在百度搜索中看到的提示框相比,简直是太丑了,哈哈,不急,我们再用css来调整显示的效果 。
。
。
现在才算是真正的完全制作完成,至于要不要设置一个延迟处理,或是其它更完善的功能,留给朋友们自己开动脑筋了,大家也可以在下面回复你的想法,等等。 客户端完整代码:
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
|
<html>
<head>
<style>
#search{font-size:14px;}
#search .k{padding:2px 1px; width:320px;}
#search_auto{border:1px solid #817FB2; position:absolute; display:none;}
#search_auto li{background:#FFF; text-align:left;}
#search_auto li.cls{text-align:right;}
#search_auto li a{display:block; padding:5px 6px; cursor:pointer; color:#666;}
#search_auto li a:hover{background:#D8D8D8; text-decoration:none; color:#000;}
</style>
<title>jquery+php实现用户输入搜索内容时自动提示</title>
</head>
<body>
<div id=
"search"
>
<input type=
"text"
name=
"k"
class=
"k"
/> <input type=
"button"
name=
"s"
value=
"搜索"
/>
</div>
<div id=
"search_auto"
></div>
</body>
</html>
<script src=
"jQuery.js"
></script>
<script>
$(
function
(){
$(
'#search_auto'
).css({
'width'
:$(
'#search input[name="k"]'
).width()+4});
$(
'#search input[name="k"]'
).keyup(
function
(){
$.post(
'search_auto.php'
,{
'value'
:$(
this
).val()},
function
(data){
if
(data==
'0'
) $(
'#search_auto'
).html(
''
).css(
'display'
,
'none'
);
else
$(
'#search_auto'
).html(data).css(
'display'
,
'block'
);
});
});
});
</script>
|
服务器端完整php代码:
1
2
3
4
5
6
7
8
9
|
<?php
$v
=
$_POST
[value];
$re
=mysql_query(
"select * from test where title like '%$v%' order by addtime desc limit 10"
);
if
(mysql_num_rows(
$re
)<=0)
exit
(
'0'
);
echo
'<ul>'
;
while
(
$ro
=mysql_fetch_array(
$re
))
echo
'<li><a href="">'
.
$ro
[title].
'</a></li>'
;
echo
'<li class="cls"><a href="javascript:;" onclick="$(this).parent().parent().parent().fadeOut(100)">关闭</a& gt;</li>'
;
echo
'</ul>'
;
?>
|
非常实用的功能吧,而且对提升用户的体验度、友好度非常棒,小伙伴们可以结合本文,自由发挥下,加入到自己的项目中去. 。
最后此篇关于jquery+php实现搜索框自动提示的文章就讲到这里了,如果你想了解更多关于jquery+php实现搜索框自动提示的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
在带有 jQuery 的 CoffeeScript 中,以下语句有什么区别吗? jQuery ($) -> jQuery -> $ - > 最佳答案 第一个与其他两个不同,就像在纯 JavaScr
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭13 年前。 Improve th
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
这个问题可能听起来很愚蠢,但请耐心等待,因为我完全是初学者。我下载了两个 jQuery 版本,开发版本和生产版本。我想知道作为学习 jQuery 的初学者,什么更适合我。 最佳答案 如果您对 jQue
The documentation说要使用 1.6.4,但我们现在已经升级到 1.7.2。 我可以在 jQuery Mobile 中使用最新版本的 jQuery 吗? 最佳答案 您当然可以,但如果您想
我在这里看到这个不错的 jquery 插件:prettyphoto jquery lightbox有没有办法只用一个简单的jquery来实现这样的效果。 我只需要弹出和内联内容。你的回复有很大帮助。
很明显我正在尝试做一些 jQuery 不喜欢的事情。 我正在使用 javascript 上传图片。每次上传图片时,我都希望它可见,并附加一个有效的删除脚本。显示工作正常,删除则不然,因为当我用 fir
这两个哪个是正确的? jQuery('someclass').click(function() { alert("I've been clicked!"); }); 或 jQuery('somec
我正在寻找一个具有以下格式的插件 if (jQuery)(function ($) { -- plugin code -- })(jQuery); 我明白 (function ($)
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭10 年前。 Improv
我知道这个问题已经被问过几次了,但想知道您是否可以帮助我解决这个问题。 背景:我尝试创建一个使用 Ajax 提交的表单(jQuery 表单提交)。我已经工作得很好,然后我想在表单上得到验证。我可以使用
我正在使用无处不在的jquery validate plugin用于表单验证。它支持使用metadata plugin用于向表单元素添加验证规则。 我正在使用此功能。当验证查找这些规则时,它会对元素进
我更喜欢为我一直在开发的网络社区添加实用的视觉效果,但随着事情开始堆积,我担心加载时间。 拥有用户真的更快吗加载(希望是缓存的)副本来自 Google 存储库的 jquery? 是否使用 jQuery
这个问题已经有答案了: Slide right to left? (17 个回答) 已关闭 9 年前。 你能告诉我有没有办法在 jQuery 中左右滑动而不使用 jQuery UI 和 jQuery
我如何找出最适合某种情况的方法?任何人都可以提供一些示例来了解功能和性能方面的差异吗? 最佳答案 XMLHttpRequest 是原始浏览器对象,jQuery 将其包装成一种更有用和简化的形式以及跨浏
运行时 php bin/console oro:assets:build ,我有 11 个这样的错误: ERROR in ../node_modules/jquery-form/src/jquery.
我试图找到 jQuery.ajax() 在源代码中的定义位置。但是,使用 grep 似乎不起作用。 在哪里? 谢谢。 > grep jQuery.ajax src/* src/ajax.js:// B
$.fn.sortByDepth = function() { var ar = []; var result = $([]); $(this).each(function()
我的页面上有多个图像。为了检测损坏的图像,我使用了在 SO 上找到的这个。 $('.imgRot').one('error',function(){ $(this).attr('src','b
我在理解 $ 符号作为 jQuery 函数的别名时遇到了一些麻烦,尤其是在插件中。你能解释一下 jQuery 如何实现这种别名:它如何定义 '$' 作为 jQuery 函数的别名?这是第一个问题。 其
我是一名优秀的程序员,十分优秀!