select2 4.02 实现类似google搜索条的 ajax remote data功能
2015-08-17 23:17
549 查看
构建一个 select2 的 下拉框,
这里注意,不能用input 来构建了
初始化成select2 对象
通过其他的js函数对这个select2 进行赋值
后台提供的json对象
{
items:
[
{
id: "02469",
code: "02469",
name: "大树路4"
},
{
id: "02470",
code: "02470",
name: "大树路2"
},
{
id: "02779",
code: "02779",
name: "大树路1"
},
{
id: "02679",
code: "02679",
name: "大树路3"
}
]
}
相关内容/article/4014381.html
2.formatRepoSelection函数中,缺省的是处理repo 对象 的 id 和 text 这2个属性,而我这里定义的json是是code 和 name,所以需要把code 和 name 复制到 id 和 text里面。否则没法显示在界面上。另外一种简单的处理方法,可以把json对象直接变成 id 和 text的结构。这样就不用定制 select2 里面的方法了。
这里注意,不能用input 来构建了
<select id="park_code"></select>
初始化成select2 对象
$("#park_code").select2({ placeholder: "选择一个停车场", ajax: { url: "/park_seek/", dataType: 'json', delay: 500, data: function (params) { return { q: params.term, // search term page: params.page }; }, processResults: function (data, page) { // parse the results into the format expected by Select2. // since we are using custom formatting functions we do not need to // alter the remote JSON data console.debug("ajax返回的对象是:") console.debug(data.items) return { results: data.items }; }, cache: true }, escapeMarkup: function (markup) { console.debug(markup) return markup; }, // let our custom formatter work minimumInputLength: 1, //至少输入多少个字符后才会去调用ajax maximumInputLength: 20, //最多能输入多少个字符后才会去调用ajax minimumResultsForSearch: 1, width: "260px", templateResult: formatRepo, templateSelection: formatRepoSelection, }); $("#park_code").on("change",function (e){ can_analyse(); })
/* 这里2个函数是用于查询到内容后,显示在select2的下拉框里面 */ function formatRepo (repo) { if (repo.loading) return repo.text; repo.text = repo.name repo.id = repo.code var markup = '<div class="clearfix">' + '<div class="col-sm-4">' + repo.code + '</div>' + '<div class="col-sm-20">' + repo.name + '</div>' + '</div>'; return markup; } function formatRepoSelection (repo) { repo.selected = true; repo.code = repo.id repo.name = repo.text if(repo.code == null || repo.code == ""){ repo.text = '请选择一个停车场' repo.name = repo.text } $("#park_name").val(repo.name); console.debug(repo); return repo.code ; } /* 这里2个函数是用于查询到内容后,显示在select2的下拉框里面 end */
通过其他的js函数对这个select2 进行赋值
$("#park_code").empty().append('<option id="'+code+'" value="'+code+'">'+name+'</option>').trigger('change');注意:这里要trigger 这个 change 的 事件,这样才会调用formatRepoSelection 这个方法,并且刷新UI。
后台提供的json对象
{
items:
[
{
id: "02469",
code: "02469",
name: "大树路4"
},
{
id: "02470",
code: "02470",
name: "大树路2"
},
{
id: "02779",
code: "02779",
name: "大树路1"
},
{
id: "02679",
code: "02679",
name: "大树路3"
}
]
}
注意几个问题:
1.如果返回的json里面没有id。则会出现查询的对象无法选择的问题。处理方式,就是在返回的josn对象里面加入 id 这个唯一标示相关内容/article/4014381.html
2.formatRepoSelection函数中,缺省的是处理repo 对象 的 id 和 text 这2个属性,而我这里定义的json是是code 和 name,所以需要把code 和 name 复制到 id 和 text里面。否则没法显示在界面上。另外一种简单的处理方法,可以把json对象直接变成 id 和 text的结构。这样就不用定制 select2 里面的方法了。
相关文章推荐
- 【Go语言】【18】GO语言的select
- 【Go语言】【18】GO语言的select
- [2-sat]HDOJ1824 Let's go home
- HDU 1847 Good Luck in CET-4 Everybody!(SG函数)
- Hodj1171多重背包转换成母函数
- machine Algorithm总结
- Google之文件系统GFS
- uva 10335 - Ray Inside a Polygon(几何)
- Algorithm --> 小于N的正整数含有1的个数
- Google之海量数据的交互式分析工具Dremel
- [Golang] 从零开始写Socket Server(3): 对长、短连接的处理策略(模拟心跳)
- django model form
- Google Guava EventBus实例与分析
- django 如何使用django自带的user做外键
- 用Go写了一个小工具,用他脚本下载日志文件,然后让开发自己去下载
- 内核启动logo
- 一个0-1指派问题(附有LINGO)程序
- Google测试分享-测试经理
- hdu3996Gold Mine 最小割
- hdu1533Going Home KM算法