• 第六章 使用 Bootstrap Typeahead 组件(百度下拉效果)(续)


    官方:http://twitter.github.io/typeahead.js/

    示例:http://twitter.github.io/typeahead.js/examples/(本文展示:Open Source Projects by Twitter)

    项目源码:https://github.com/twitter/typeahead.js(点击Download ZIP下载typeahead.js-master.zip

    1.实现

    HTML

    提示:examples.css为实例中的css文件

    <link type="text/css" href="@Url.Content("~/Scripts/typeahead/examples.css")" rel="stylesheet"/>
    <script src="@Url.Content("~/Scripts/typeahead/typeahead.js")"  type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/typeahead/hogan-2.0.0.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/typeahead/underscore-min.js")"  type="text/javascript"></script>
    <div>
        <div style="margin: 10px 50px" class="col-md-3">
            <div class="form-group example-twitter-oss">
                <label class="col-md-4 control-label ">
                    姓名</label>
                <div class="col-md-7">
                    @Html.TextBox("InputName", "", new { @class = "inputName form-control", placeholder = "请输入姓名" })
                </div>
            </div>
        </div>
        @Html.Hidden("getInputName", Url.Action("GetInputName"))
        <script type="text/javascript">
            $('.inputName').typeahead({
                name: 'inputname',
                remote: $("#getInputName").val() + '/?query=%QUERY',
                template: ['<p class="repo-language">{{vipname}}</p>',
                           '<p class="repo-name">{{name}}</p>',
                           '<p class="repo-description">{{description}}</p>'
                           ].join(''),
                limit: 10,
                engine: Hogan
            });
        </script>
    </div>

    控制器

      #region 获取姓名提示下拉
            /// <summary>
            ///  获取姓名提示下拉
            /// </summary>
            /// <returns></returns>
            public ActionResult GetInputName(string query)
            {
                var list = new List<TypeaheadModel>();
                if (!string.IsNullOrWhiteSpace(query))
                {
                    query = query.Trim();
    
                    foreach (var item in GetData())
                    {
                        if (item.name.Contains(query))
                        {
                            list.Add(item);
                        }
                    }
                }
                return Json(list, JsonRequestBehavior.AllowGet);
            }
            #endregion
    
    
            public List<TypeaheadModel> GetData()
            {
                List<TypeaheadModel> list = new List<TypeaheadModel>();
                TypeaheadModel model = new TypeaheadModel();
    
                for (int i = 0; i < 5; i++)
                {
                    model = new TypeaheadModel();
                    model.description = "D";
                    model.vipname = "V";
                    model.name = "A" + i.ToString();
                    model.value = "A" + i.ToString();//
                    list.Add(model);
                }
    
                for (int i = 3; i < 10; i++)
                {
                    model = new TypeaheadModel();
                    model.description = "";
                    model.vipname = "";
                    model.name = "B" + i.ToString();
                    model.value = "B" + i.ToString();
                    list.Add(model);
                }
    
                return list;
            }

    模型

    public class TypeaheadModel
        {
            public string name { get; set; }
            public string vipname { get; set; }
            public string description { get; set; }
            /// <summary>
            /// 选中后文本框的值
            /// </summary>
            public string value { get; set; }
        }

    2.效果:

  • 相关阅读:
    浅析ES6中的iterator
    nodejs中的异步回调机制
    用好js与nodejs中的try...catch
    vscode设置html默认浏览器
    nodejs中相互引用(循环引用)的模块分析
    ES6—带默认值的函数参数及其作用域
    函数声明与函数表达式的区别
    let块级引起的闭包思考
    进程与线程
    angular(^4)-监控表格按键行为的问题
  • 原文地址:https://www.cnblogs.com/xcsn/p/3524111.html
Copyright © 2020-2023  润新知