博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【ASP.Net MVC】在AspNet Mvc使用JQuery AutoComplete组件
阅读量:5934 次
发布时间:2019-06-19

本文共 3660 字,大约阅读时间需要 12 分钟。

官方文档:

    

  要使用JQuery AutoComplete组件,需要引用:

      【1】.jquery.js

      【2】.jquery-ui.js

      【3】.jquery.ui.autocomplete.css

 

  然后这样使用即可:

var submitAutoCompleted = function(event, ui) {        var $input = $(this);        $input.val(ui.item.label);                 .......    };    var createAutoCompleted = function() {        var $input = $(this);        var ajaxOption = {            source: $input.attr("data-oft-ajax-autocompleted"), //告诉AutoComplete组件去哪里获取数据            select:submitAutoCompleted                          //选择某选项后,要处理的逻辑        };        $input.autocomplete(ajaxOption);    }    $("input[data-oft-ajax-autocompleted]").each(createAutoCompleted);

 

 

 

  1.1 目标

      为文本框的实现自动输入提示功能。比如:

    在文本框中输入“K”,自动提示你可能要输入的所有以“K”开头的选项。

 

      1.2 实现步骤

  第一步:在控制器中创建AutoCompleted的Aciton

           返回类型JsonResult。为JQuery AutoComplete组件提供Json格式的数据

///         ///         ///         ///         /// 
//http://localhost:3951/Reviews/autocompleted?term=老 //返回JSON,如下格式: // [ // {"label":"老字号餐馆1000"},{"label":"老字号餐馆1001"},{"label":"老字号餐馆1002"}, // {"label":"老字号餐馆1003"},{"label":"老字号餐馆1004"},{"label":"老字号餐馆1005"}, // {"label":"老字号餐馆1006"},{"label":"老字号餐馆1007"},{"label":"老字号餐馆1008"},{"label":"老字号餐馆1009"} // ] ///
public ActionResult AutoCompleted(string term) { var model = _restaurantReviews.Where(r=>r.Name.ToLower().Contains(term.ToLower().Trim())) .Take(10) .Select(r=> new { label = r.Name //匿名对象的字段名必须是label,因为ui.item.label }); //serialize model into JSON format return Json(model,JsonRequestBehavior.AllowGet); }

  值得注意的是:

    匿名对象的字段名必须是label,因为在后面的js方法中用到的:

var submitAutoCompleted = function(event, ui) {        var $input = $(this);        $input.val(ui.item.label);        var $form = $input.parents("form:first");        $form.submit();    };

 

  ui.item.label名字是固定的,参看本文的第四步。

 

  第二步:为文本框填添加属性data-otf-autocompleted,用于锚点

@Url.Action("AutoCompleted")是指向第一步定义的Action:
  public ActionResult AutoCompleted(string term)

  

  第三步:添加javascript代码处理

$(function () {    var createAutoCompleted = function() {        var $input = $(this);        var ajaxOption = {            source: $input.attr("data-oft-ajax-autocompleted") //告诉AutoComplete组件去哪里获取数据        };        $input.autocomplete(ajaxOption);    }    $("input[data-oft-ajax-autocompleted]").each(createAutoCompleted);});

  到这一步,就实现了实现了自动提示输入功能。

 

注意,当没有看到效果,尝试检查是否存在如下原因:  如果上面的js代码是在原来已经存在的js文件(比如:abc.js)中添加,浏览器已经如果加载过该js文件,就有可能不会再加载js文件,导致该js文件中不存在我们第三步添加的js代码。处理办法是:刷新页面(按F5键)。

 

  第四步:添加当选择提示下的某一项时,需要处理的逻辑:

     在ajaxOptin中添加select参数:

      在这里要演示的是,当选中文本框的某项后,导致其父html的Form提交表单,html代码如下:

       然后,在js文件中添加javascrtpt代码,使得

    当选中文本框的某项后,导致其父html的Form提交表单

$(function () {    var submitAutoCompleted = function(event, ui) {        var $input = $(this);        $input.val(ui.item.label);        var $form = $input.parents("form:first");        $form.submit();    };    var createAutoCompleted = function() {        var $input = $(this);        var ajaxOption = {            source: $input.attr("data-oft-ajax-autocompleted"), //告诉AutoComplete组件去哪里获取数据            select:submitAutoCompleted                          //选择某选项后,要处理的逻辑        };        $input.autocomplete(ajaxOption);    }    $("input[data-oft-ajax-autocompleted]").each(createAutoCompleted);});

 

   用FireFox浏览器的Firebug插件,可以监视到:ui.item.label名字是固定的。显然,当item.value没显式设置值时,自动被赋值为item.labe

 

  item--官网给的解释:

  • item
    Type: 
     
    • label
      Type: 
      The string to display for the item.
    • value
      Type: 
      The value to insert into the input when the item is selected.

 其他资料:

  

转载地址:http://kujtx.baihongyu.com/

你可能感兴趣的文章
总结一下顶级域名和子级域名之间的cookie共享和相互修改、删除
查看>>
使用Spark分析拉勾网招聘信息(二): 获取数据
查看>>
利用Githug学习Github / Githug Challenge Log
查看>>
自定义控件之完全自定义
查看>>
跨平台App开发的新趋势
查看>>
PEP 8 摘录
查看>>
Nginx+Https配置
查看>>
[LintCode/LeetCode] Edit Distance
查看>>
ReactNative导航设计与实现
查看>>
Android 单元测试: 首先,从是什么开始
查看>>
安全的应用程序开发和应用程序安全防御
查看>>
我的编程之路:「生存」是唯一的基本要求
查看>>
LCFinder 0.3.0 Beta 发布,图像标注与目标检测工具
查看>>
400+节点的 Elasticsearch 集群运维
查看>>
IO流(2)
查看>>
深入理解Java中的逃逸分析
查看>>
CSS(溢出_判断IE版本)
查看>>
Thrift协议的服务模型
查看>>
豪掷 30 亿,支付宝能否“买”来刷脸支付的未来? ...
查看>>
Spring Cloud Alibaba基础教程:Nacos配置的多环境管理 ...
查看>>