zoukankan      html  css  js  c++  java
  • (最近新弄的几个小demo) 之 (模仿百度搜索框)后续更新中,比较实用

    类似于一个百度的搜索,输出 汉字 或者 字母 在下面显示一个div 上面的数据是每次文本框控件的onkeyup事件后动态绑定的

    传向后台参数 去数据库查 然后返回js字符串 前台绑定 做不到百度那么快的响应 但是还是能用的

    代码连接下载 

    http://www.baidupcs.com/file/e79ec71b4e34e7b0e419f7db9ab95c46?fid=2467423588-250528-2904392524&time=
    1362979535&sign=FDTA-DCb740ccc5511e5e8fedcff06b081203-ljLhFldhAtuvjKTqSjn4qTkD5IQ%3D&expires=1h

    下载的代码里面没有数据库和后台访问数据库的代码,这里把放上

    数据库设计 id name(可搜索的条件) namepy(可搜索条件) 其他无所谓了。自己定义

    string sql = string.Format("select top 10 Id,HopName from HopL where HopPY like '%{0}%'", strpy);
    DataTable dt = DBTools.DB.ExecuteDataSet(CommandType.Text, sql).Tables[0];
    if (dt.Rows.Count <= 0)
    {
    sql = string.Format("select top 10 Id,HopName from HopL where HopName like '%{0}%'", strpy);
    dt = DBTools.DB.ExecuteDataSet(CommandType.Text, sql).Tables[0];
    }
    return Windows_Json.JsonHelper.ToJson(dt); 

    拼音查询不到,就查了名称

    这里用到了一个datatable转换json的类

    public static string ToJson(DataTable dt)
    {
    StringBuilder jsonString = new StringBuilder();
    jsonString.Append("[");
    DataRowCollection drc = dt.Rows;
    for (int i = 0; i < drc.Count; i++)
    {
    jsonString.Append("{");
    for (int j = 0; j < dt.Columns.Count; j++)
    {
    string strKey = dt.Columns[j].ColumnName;
    string strValue = drc[i][j].ToString();
    Type type = dt.Columns[j].DataType;
    jsonString.Append("\"" + strKey + "\":");
    strValue = StringFormat(strValue, type);
    if (j < dt.Columns.Count - 1)
    {
    jsonString.Append(strValue + ",");
    }
    else
    {
    jsonString.Append(strValue);
    }
    }
    jsonString.Append("},");
    }
    //zhanghao 2012 01 14 原因:会将匹配的 ‘[’ 删除
    if (drc.Count > 0)
    {
    jsonString.Remove(jsonString.Length - 1, 1);
    }


    jsonString.Append("]");
    return jsonString.ToString();
    }

    大家拿过去用就可以了。

    现在我们主要来关心一下前台,前台的编写比后台麻烦

    <div class="main">
    <div class="global">
    <ul id="k">
    <li>
    <input type="text" id="txt" style=" 190px; height: 20px;" /></li></ul>
    </div>
    <div id="t">
    <div class="m" style="display: none; height: auto;" id="div_content">
    </div>
    </div>
    <input type="text" style="display: none" />
    </div>

    首先一个文本框,下面是要显示的div 下载的代码里面大家看一下,你如果只需要一部分,拿出来用就可以了。

    首先绑定事件

    $(document).ready(function () {
    $('#txt').bind('keyup', processKeyup);
    });

    然后处理鼠标操作事件

    function processKeyup(event) {
    //var myEvent = event || windows.event;
    var keyCode = event.keyCode;
    if (keyCode == 13) {

    processEnter();//按下 enter键的操作
    }
    else if (keyCode == 38 || keyCode == 40) {
    processKeyUpAndDown(keyCode);//按下 上下键的操作
    }
    else {
    show();//按下其他键就是查询数据了。
    }
    }

    按下enter键的操作 把当前所选中的内容放到文本框里 然后去执行方法 我这里是绑定数据

    function processEnter() {
    if (highLightIndex != -1) {
    $('txt').val($('#div_content').children().eq(highLightIndex).html());
    var tmp = $('#div_content').children().eq(highLightIndex).html();
    $('#div_content').html('').hide();
    hid22(tmp);
    }
    }

    按下上下键的操作

    function processKeyUpAndDown(keyCode) {
    var words = $('#div_content').children();当前所显示div的所有标签
    var num = words.length;
    if (num <= 0) return;
    changeToWhite();//选中标签
    highLightIndex = ((keyCode != 38 ? num + 1 : num - 1) + highLightIndex) % num;//计算当前在那个标签上面
    words.eq(highLightIndex).css('background-color', 'pink');//更换颜色
    $('#txt').val(words.eq(highLightIndex).html());//把选中的标签的文字放到文本框里面
    }
    function changeToWhite() {
    if (highLightIndex != -1) {
    $('#div_content').children().eq(highLightIndex).css('background-color', 'gray');
    }
    }

  • 相关阅读:
    机器学习系列(4) 线性回归
    MYSQL系列(5) 电商常用指标查询
    MYSQL系列(4) 关于时间函数的一些写法
    快速排序
    选择排序
    希尔排序
    直接插入排序
    冒泡排序
    Java修饰符大汇总
    字符串实现大数的相加
  • 原文地址:https://www.cnblogs.com/chenmengmeng/p/2953882.html
Copyright © 2011-2022 走看看