ajax+php实现类似百度搜索框&&js中click和blur冲突问题

  初学ajax,模仿百度搜索框写了一个小东西

实现:     

 

搜索框代码:

<input type="text" id="s_number" class="form-control" placeholder="请输学生学号" 
aria-label="请输入学生学号">
<div id="searchBox" class="serdiv" display: none> </div>

js部分:

  对数据库中匹配的字段不同部分标黑

  以及点击下拉列表中的内容直接加入

$('#s_number').keyup(function(){
        if(xhr){
          xhr.abort();//如果存在ajax的请求,就放弃请求
        }
         var textvalue=$.trim($(this).val());
         if(textvalue!='')
         {
         var  xhr=$.ajax({
            type:"get",
            url:'student_cheak.php',
            cache:false,
            data: 'textvalue='+textvalue,
            dataType:'json',//返回数据类型
            success:function(json){   //任意取名
              if(json.length!=0)
              {
                var lists='<ul >';
                $.each(json,function(){
                  lists+="<li>"+textvalue+'<b>'+this.s_name.substr(textvalue.length)+'</b></li>';
                })
                lists+="</ul><div class='serdiv1'></div>";//下拉框底部加灰色样式
                $("#searchBox").html(lists).show();
                $("li").click(function(){
                  $('#s_number').val($(this).text());//this始终指向js对象
                  $("#searchBox").hide();
                }).mouseover(function(){//这两个事件显示当前鼠标所在下拉列位置
                  $(this).css({"background":"#ada99b1a"})
                }).mouseout(function(){
                  $(this).css({"background":"#00000000"})
                })
              }else{
                $("#searchBox").hide();
              }
            }
          });
         }else{
          $("#searchBox").hide();
         }
     }).blur(function(){    
      setTimeout(function(){   //
             $("#searchBox").hide(); ;
        }, 300);
    });

          后端php使用pdo方式连接数据库

注意变量加入sql字符串的方法以及%的位置

<?php
   function connectDb(){  //连接
		$servername = "localhost";
		$username = "root";
		$password = "123";
		$dbname="mydatabase";
		 
		try {
		    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
		}
		catch(PDOException $e)
		{
		     exit('数据库连接失败');
		}
		return $conn;
	}
    
    function test($keyword){//从数据库中查找关键字的函数
		$db=connectDb();
		$result=$db->prepare("select s_name from my_student where s_name like '{$keyword}%'");
		$result->execute();
		return $result->fetchAll(PDO::FETCH_ASSOC);
	}
	$keyword=$_GET['textvalue'];
	$suggestion=test($keyword);
	echo json_encode($suggestion);
?>

       期间遇到一个问题,由于输入框绑定了blur事件以及生成的下拉列表绑定了click事件,点击下拉列表触后先触发了blur事件隐藏后触发不了click事件,最后百度大法成功解决

    JavaScript为单线程,而blur事件优先级高于click,只会执行前者。

解决1:定时器后置blur事件中的下拉列表隐藏,

解决2:mousedown代替click事件,

    点击事件的优先级:mousedown>blur>mouseup>click

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
仿百度搜索引擎软件蜘蛛组件包括三大功能模块:链接采集、网页分析、无效网页扫描; 自动识别GB2312、BIG5、UTF-8、Unicode等网页编码; 文件类型证察防止非文本类型文件采集; 蜘蛛可以采集ASP、PHPJSP等动态数据网页和HTML、SHTML、XHTML等静态网页; 支持续采功能,如果因系统、网络等故障问题终止采集,系统将在下次启动采集时提示您是否“继续采集”或“结束任务”; 采集任务管理功能可以设置多个采集任务安排计划工作,每一个采集任务将会顺次运行; 本程序完全高仿百度,有自主开发的蜘蛛智能抓取网页功能,非网络上仅仅只是界面模仿的免费程序! 程序包含15大功能! 1.网页搜索 2.搜索风云榜 3.网址导航 4.竞价排名 5.蜘蛛智能抓取网页 6.网站qp值智能排名 7.后台违法关键字过滤 8.网站智能分类 9.违法作弊网站一键删除 10.网站登录入口 11.信息反馈留言板 12.搜索右侧自定义广告 13.已收录网站和网页统计 14.网站一键收录 15.客户端蜘蛛系统和web蜘蛛系统 演示截图请见code文件夹! 程序运行环境:PHP+MYSQL 负载亿级数据! 程序官方演示地址: http://www.kuaso.com/ 程序购买和服务 http://www.kuaso.com/a/buy.html 程序后台演示图片 http://www.kuaso.com/a/wzht.html 蜘蛛后台演示图片 http://www.kuaso.com/a/ht.html 本程序为演示程序,已经删除蜘蛛系统和竞价排名系统! 运行install.php 填入信息安装 后台admin 账号admin 密码admin 本演示程序包含数据为 已收录网站:197 已收录网页:1274
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值