MVC利用HTML5 DOM Datalist对象实现 input 自动补全

来自w3cschool的介绍

定义和用法
标签定义选项列表。请与 input 元素配合使用该元素,来定义 input 可能的值。 datalist
及其选项不会被显示出来,它仅仅是合法的输入值列表。 请使用 input 元素的 list 属性来绑定 datalist。

浏览器支持
所有主流浏览器都支持 标签,除了 Internet Explorer 和 Safari。

控制器代码

  public ActionResult GetPlacename(string key, int top)
        {
            var list = AttributeReaderHelper.GetPlacenameList(key, top);
            return Json(new { result = list, count = list.Count() });
        }

脚本代码

<script>
    // 地名自动补全
    $("#Client_PlaceFullName").keyup(function () {
        var txt = $("#Client_PlaceFullName").val();

        $.ajax({
            url: "/Manager/GetPlacename",   //url:"/home/get?name="+name,    以问号的方式去查询  适用于单个数据列的查询
            type: "post",
            data: { "key": txt, "top": 10 },//选填  多参数查询时建议使用这种键值对的方式   如  data: {"name":name, "id":id}
            dataType: "json",               //(返回值类型)写上之后不用在遍历里面再去写类型转换
            success: function (data) {
                $("#placenameList").empty();
                var list = data.result;

                for (i = 0; i < data.count; i++) {
                    var op = "<option  value=' " + list[i].FullName + "' label='" + list[i].Initials + "'></option>";
                    //var op = "<option  value=' " + list[i].FullName + "'></option>";
                    $("#placenameList").append(op);
                }
            },
            error: function () {
                layer.msg("获取地名列表失败。")
            }
        });
    });
</script>

页面代码

<div class="layui-form-item">
    <div class="layui-inline">
        @Html.LabelFor(m => m.Client.Address, new { @class = "layui-form-label" })
        <div class="layui-input-inline">
            @Html.TextBoxFor(m => m.Client.PlaceFullName,
                new Dictionary<string, object>() {
                    { "class", "layui-input" },
                    { "placeholder", "小区或村庄名称" },
                    { "list", "placenameList" },
                    { "lay-verify" , "required" },
                    {"autocomplete","off" }
                })
            <datalist id="placenameList"></datalist> @* 地点名称自动完成 *@
        </div>

        <div class="layui-input-inline">
            @Html.TextBoxFor(m => m.Client.Address,
                new Dictionary<string, object>() {
                    { "class", "layui-input" },
                    { "placeholder", "请输入具体地址" },
                    { "lay-verify" , "required" },
                    {"autocomplete","off" }
                })
        </div>

        <div class="layui-form-mid layui-word-aux">
            <i class="layui-icon layui-icon-rate-half" style="color:red;"></i> 必填
        </div>

        <div class="layui-input-inline" style="width:400px;">
            @Html.ActionLink("地名管理", "Index", "Placename",
                new { Area = "Admin" },
                new { @class = "layui-btn layui-btn-normal", target = "_black" })
        </div>
    </div>
</div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值