搜索框实现,常用搜索,历史搜索等

1、实现功能

搜索框实现,常用搜索,历史搜索等_第1张图片搜索框实现,常用搜索,历史搜索等_第2张图片

2、页面布局HTML

共三部分

(1)搜索栏

input 框,右边是一个a标签,可以跳转回前一页面。之后写元素用来放置历史搜索和常用搜索。

 
取消

分析:weui-icon-serach 就搜索的那个图标,接下来是Input框,后面a标签,class为weui-icon-clear ,是第二张图片中清除的那个图标。id=searchCLear是用来清空搜索框输入内容的。

(2)历史搜索,常用搜索

 
历史搜索
常用搜索

 这个部分用来放置历史搜索项和常用搜索项。

(3)搜索结果

  • 抢单
  • 从后台请求获取搜索结果,然后用数据填充shan上面框架。

    3、代码分析:js代码如下:

     /*初始化事件*/
        function initEvent() {
            /*获取焦点*/
            $(document).ready(function () {
                $("#searchInput").focus();
            });
    
            /*点击软键的搜索按钮*/
            $("#search-form").submit(function () {
                var $search_input = $("#searchInput");
                var search = $search_input.val();
                if(search.length == 0) search = $search_input.attr("data-default");
                /* 启动搜索过程 */
                beginSearch(search);
                return false;
            });
            /*点击清空按钮*/
            $("#searchClear").click(function () {
                $("#searchInput").val("");
                $("#searchInput").focus();
                /*更新搜索*/
                updatePrompt();
            });
            /*当内容改变时*/
            $("#searchClear").change(function () {
                var value = $("#searchInput").val();
                if(value.length == 0) $("#searchClear").hide(); else $("#searchClear").show();
            });
    
            /*点击取消按钮*/
            $("#searchCancel").click(function () {
                location.href="index.html";
            });
        }

     一开始获得用户的常用搜索和历史搜索。

     $.get(ServerUrl + "search/popularHistory",function (data) {
                if(data.status == Status.Status_OK){
                    initPromptCommon(data.data);
                }else{
                    /*没有常用搜索*/
                }
            });
            /* 历史搜索 */
            $.get(ServerUrl + "search/searchHistory",function (data) {
                if(data.status == Status.Status_OK){
                    for(var prompt in data.data){
                        data.data[prompt] = data.data[prompt].searchRecord;
                    }
                    initPromptHistory(data.data);
                }else{
                    /*没有历史搜索*/
                }
            });
    
            function initPromptCommon(prompts) {
                initPrompt("#search-prompt-common", prompts);
                /* 显示常用搜索 */
                $("#commonSearch").show();
                $("#commonSearchContent").show();
            }
            function initPromptHistory(prompts) {
                initPrompt("#search-prompt-history", prompts);
                /* 显示历史搜索 */
                $("#historySearch").show();
                $("#historySearchContent").show();
            }
            function initPrompt(elm_id, prompts) {
                var $prompt = $(elm_id).empty();
                for(var prompt in prompts){
                    $prompt.append('
    ' + prompts[prompt] + '
    '); } /*点击*/ $(elm_id + " .item").click(function () { var search = $(this).attr("data-search"); beginSearch(search); /*这样用户可以清空!*/ $("#searchInput").val(search); }); }

    请求历史接口,返回的数据格式如下:

    搜索框实现,常用搜索,历史搜索等_第3张图片

    执行搜索

     /* 获取第page页,并显示*/
        function getTaskByPage(callback) {
            /*联网获取数据*/
            $.get(ServerUrl + "search/search",{
                keyWord: param.search,
                page: param.page
            },function (data) {
                if(data.status == Status.Status_OK){
                    if(data.data.length == 0){ /* 表明已经没有任务了 */
                        param.over = true;
                        if(param.page == 1){
                            $("#show-no-data").show();
                        }else{
                            $.toast("没有更多了", "text");
                        }
                    }else{ /* 有任务 */
                        $("#show-no-data").hide();
                        showResult(data.data);
                    }
                }else/* if(data.status == Status.Status_NULL_Result)*/{ /* 空结果 */ /*表明出现问题...*/
                    param.over = true;
                    if(param.page == 1){
                        $("#show-no-data").show();
                    }
                }
    
                /* 执行完成后的回掉 */
                callback();
            });
        }

     4、实现百度模糊搜索大概思路

    一开始ul id=search,没有li元素,li元素是在向服务器请求后自动生成。

    var searchModule=function(){
        var $searchKey=$("#search");
        var $searchBox=$("searchBox");
       }
    function bindData{
       var  searchKey= $searchKey.val();
       $ajax({
         url:""?wd=searchKey;
         dataType:"Jsonp";
         success:function(data){
        //对请求回来的数据进行操作  类似于  callback;
            var str="",
            $each(data,function(index,item){
                  if(index<=3){
                str+="
  • "+item"; } }) $searchBox.html(str.stop().slideDown(300)); } }) } function init(){ $search.on("focus keyup",function(){ var val=$(this).val; if(val.length>0){ bindData(); return; } $searchBox.html(str.stop().slideUp(300)); }) }
  •  

    你可能感兴趣的:(javascript)