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');
    }
    }

  • 相关阅读:
    微信小程序开发教程
    微信小程序的动画效果
    关于PHP中的全局变量global和$GLOBALS的不同区分
    爱心背景特效
    jQuery常用语法总结笔记
    微信HTML5页面设计建议
    学习Javascript闭包(Closure)
    转: web 页面加载速度优化实战100% 的飞跃提升
    javascript中slice() splice() concat()操作数组的方法
    Web前端开发规范文档你需要知道的事
  • 原文地址:https://www.cnblogs.com/chenmengmeng/p/2953882.html
Copyright © 2011-2022 走看看