仿百度下拉框--ajax

原文链接:

http://www.cnblogs.com/luckyadam/archive/2011/06/29/2093477.html

我自己的使用环境:vs2010+MVC4+easyui

流程:

1.先在form中加入一个div,例如<div id="tagDiv" tabindex="0"></div>

//tabindex="0" 使其可以使用blur()

参考:从浏览器的focus blur说起

http://www.cnblogs.com/_franky/archive/2010/04/28/1722592.html

 

还有一个文本框:

@Html.TextBox("newTag", null, new { style = "border: 1px solid #555;height: 20px;", autocomplete ="off"})

 

2.弄一个隐藏域的URL,这步可以不用写,直接在post里面写url也可以。

例如@Html.Hidden("getUrl", Url.Action("GetList"))

 

3.js:

//先定义:

 var $resultDiv = $('<div id="resultDiv" class="pa f12 ff"></div>');
    var $resultUl = $('<ul id="resultUl"></ul>');
    var $resultLi = [];
    var currentTxt;

 $(function () {//页面加载完后加载

   $("#newTag").keyup(function (e) {
             if (e.keyCode != 40 && e.keyCode != 38) {//最好加上37、39(左右)
                 currentTxt = $("#newTag").val();
                 pinyinOption();
             }
         }).focus(function () {
             this.select();
         });

   function pinyinOption() {
             $.post('@Url.Action("GetTags")',{ pinyins: $("#newTag").val() }, pinyinCallback, 'json');
       }

  function pinyinCallback(data) {
         $("#resultDiv").show();
         $resultUl.html("");
         for (var i = 0; data[i]; i++) {
             $resultLi[i] = $("<li></li>");
             $resultLi[i].html(data[i]);
             $resultUl.append($resultLi[i]);
         }

   if ($resultUl.html() == "") {
             $("#resultDiv").hide();
         }
         $resultUl.appendTo($resultDiv);
         $resultDiv.appendTo($("#tagDiv"));
         $("#resultDiv li").hover(function () {
             $(this).addClass("esultDivLiHover");
         }, function () {
             $(this).removeClass("esultDivLiHover");
         });
         $("#tagDiv").blur(function () {
             $("#resultDiv").hide();//离开隐藏div
         });
         $("#resultDiv li").click(function (event) {
             $("#newTag").val($(this).text());
             //$("form").submit();

    $("#resultDiv").hide();//点击选择之后就隐藏,上面的blur我使用了没有用,弄不懂
         });
         //键盘上下键控制
         var index = -1;    //标记上下键时所处位置
 
         document.documentElement.onkeydown = function (e) {
             e = window.event || e;
             if (e.keyCode == 40) {  //下键操作
                 if (++index == $("#resultDiv li").length) {  //判断加一操作后index值是否超出列表数目界限
                     index = -1;             //超出的话就将index值变为初始值
                     $("#newTag").val(currentTxt);    //并将文本框中值设为用户用于搜索的值
                     $("#resultDiv li").removeClass("esultDivLiHover");
                 }
                 else {
                     $("#newTag").val($($("#resultDiv li")[index]).text());
                     $($("#resultDiv li")[index]).siblings().removeClass("esultDivLiHover").end().addClass("esultDivLiHover");
                 }
             }
             if (e.keyCode == 38) {  //上键操作
                 if (--index == -1) {    //判断自减一后是否已移到文本框
                     $("#newTag").val(currentTxt);
                     $("#resultDiv li").removeClass("esultDivLiHover");
                 }
                 else if (index == -2) {     //判断index值是否超出列表数目界限
                     index = $("#resultDiv li").length - 1;
                     $("#newTag").val($($("#resultDiv li")[index]).text());
                     $($("#resultDiv li")[index]).siblings().removeClass("esultDivLiHover").end().addClass("esultDivLiHover");
                 }
                 else {
                     $("#newTag").val($($("#resultDiv li")[index]).text());
                     $($("#resultDiv li")[index]).siblings().removeClass("esultDivLiHover").end().addClass("esultDivLiHover");
                 }
             }
         };
     }

}
 

4.关于controller怎么获取数据就不说了,下面讲下css。

关键点:通过"position:absolute;  z-index: 100;"样式来使得div浮在上层

 

#resultDiv
  {
     left: 47px;
     border: 1px solid #000;
     background: #fff;
     z-index: 100;

 position:absolute;
     width: 200px;
     
  }
 #resultDiv li
  {
     cursor: default;
     padding: 2px 4px;
  }
 .esultDivLiHover
  {
     background: #cfcfcf;
  }

 

隐藏div问题

1.离开div范围隐藏

   $("#tagDiv").mouseleave(function () {//离开
                      $("#resultDiv").hide();
           });

     mouseenter和mouseleave,这两个函数是jquery封装的函数, 可以监控鼠标移近和移出指定的div

    $("#tagDiv").live("mouseenter",function(){
           //处理流程
      });
      $("#tagDiv").live("mouseleave",function(){
          //处理流程
      });

2.点击页面隐藏div

$(document).click(function () {
                      $("#resultDiv").hide();
                  });

存在问题:如果点击文本框,div也隐藏

解决:

$("#newTag").click(function (e) {
            e.stopPropagation();//阻止事件冒泡
});

  

 

时间: 2024-09-28 02:50:43

仿百度下拉框--ajax的相关文章

php+ajax 仿google 下拉框代码一

php+ajax 仿google 下拉框代码一,这里php代码 <?php header('Content-Type:text/html;charset=utf-8'); require('../../admin/include/db_conf.php'); if($_POST['add']){     $keyword = trim($_POST['keyword']);     if(empty($keyword)){         header("LOCATION: suggest

巧用百度下拉框设置网站的目标关键词

一个网站标题的关键词的设置决定了我们SEO的方向,但很多人在选取关键词的时候非常迷茫,他们总想获取相关关键词所有的流量,但这样做的结果是一个关键词都没有做上来.我们在设置关键词的时候,只需要获得针对性的.我们网站所要体现的关键词的流量即可,不要总是想着获取一些和自己网站不相关的边缘流量,否则对我们的网站是有害的.下面我们以最近大家比较关注的油罐车为关键词结合百度下拉框来做为案例,请看下图:   以上为百度搜索油罐车时百度下拉框提示的信息,那么我们先要了解百度下拉框的相关搜索词的原理.百度是根据用

陈天胜:透视百度下拉框营销的灭绝

前一段时间老曹写过一篇关于下拉框营销的文章,但是时隔不久百度下拉框营销就已经退出了市场,各相关软件公司疯狂掠财之后,被深深的丢进了深渊.这种营销方式从出现到灭绝可以说是昙花一现,同时也说明了依附于大型网络平台所开展的附带营销业务也是很容易被扼杀的. 百度下拉框营销是一种比较容易实现的技术,就是根据某关键词的独立IP搜索的次数来进行排序,增长速度快并且搜索频率比较高的关键词会被排名很高,所以很多软件公司看到了这块市场,开发关键词互刷平台,当多人同时挂上软件的时候,就会互相刷新关键词的搜索量,当搜索

王宝臣:百度下拉框的三点意义心得体会

用户体验可以表现在任何地方,在站长圈说的用户体验大多都是在说网站的某一个细节,比如我们经常观看的logo是在网页的头部的左上角区域(个性页 面除外),这其实也是归结于用户群体的一个使用习惯,那么言归正传百度的下拉框其实也是百度产品在提高他们的用户体验而做的一个细节调整,当某一个时间段 搜索某一特定词汇的人数比较多的时候自然的百度搜索机器就会帮助用户识别并且提示跟搜索词汇前几个字有关系的那些词汇进行提示,如图:   你会发现当我在百度搜索框中输入:王宝的时候近期的一些搜索包括知名草根电影明星-王宝

破解百度相关搜索神秘性 分享百度下拉框成功方法

当我们在百度的搜索框里面,搜索一个关键词后,首先我们能够看到百度搜索框变成了一个下拉框,很多相关的搜索会出现在下拉框里面,而在这个关键词的搜索结果页面的底部,也会同样出现一些相关关键词,这是百度为了提升用户搜索体验的一种功能,可正是这种功能,往往能够给我们草根站长带来丰厚的利润,只要我们能够把自己网站的长尾关键词做到这个下拉框或者相关搜索里面,就会给自己网站带来相当不错的高转化率的流量!可是又如何能够实现呢?那就从百度的相关搜索原理来说起吧! 首先,搜索引擎制定的排名规则,网站的流量往往是比较看

透过百度下拉框营销的灭绝看互联网发展

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 前一段时间老曹写过一篇关于下拉框营销的文章,但是时隔不久百度下拉框营销就已经退出了市场,各相关软件公司疯狂掠财之后,被深深的丢进了深渊.这种营销方式从出现到灭绝可以说是昙花一现,同时也说明了依附于大型网络平台所开展的附带营销业务也是很容易被扼杀的. 百度下拉框营销是一种比较容易实现的技术,就是根据某关键词的独立IP搜索的次数来进行排序,增长速

百度下拉框营销失效搜狗下拉框营销崛起

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 越来越多的企业去重视百度下拉框这个位置的营销,因为这些位置的确为企业获得了不少的流量,以及潜在的客户.但是由于前一段时间CCTV对百度的大肆曝光,似的百度不得不更加的严谨起来,稍有不慎,搜索引擎老大的位置恐怕会开始晃动. 能让百度害怕的不仅仅是用户,还有跟随在百度后面的搜索引擎,最有潜力的要数搜狗搜索引擎了,在百度一直的压制下,搜狗搜索引擎的

实战经验 百度下拉框相关搜索优化

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 百度下拉框搜索建议:指用户在百度搜索框输入关键词后,百度在海量数据库中自动匹配找出相关搜索建议,展现在搜索下拉框中,便于用户更精准的找到需要的内容. 搜索建议基本原理:比如我们在搜索框中输入"家居饰品",在其下方,百度列出了10个相关词组,这些词组是根据用户的搜索量和点击量自动排名,每产生一个新词组,百度都会将它放到最后,

SEO新手浅谈百度下拉框和百度相关搜索

使用过搜索引擎的人都会发现,你在搜索框输入某一个关键词的时候都会出现一个下拉框,下拉框出现的都是一些和输入内容相近的关键词,而且在搜索结果的下方会有一个相关搜索结果,这有点像我们平时用的表单,你在表单里输入的内容电脑有时会自动保存,当你下次使用该表单的时候鼠标点击表单输入框就会出现一个下 拉框,下拉框里则是你在表单输入过的内容,这也是一种智能提示,但是搜索引擎不会记录我们在电脑上输入过的内容,他是怎样分配下拉框里的内容的呢? 那么,首先要知道什么是百度下拉框和相关搜索,百度下拉框官方的说法叫做智