select2组件功能强大,包含异步、回调、事件、格式化等内容,下面简单做个例子
<input type="hidden" id="b" class="select2 input-large" name="item"/>
封装组件入口,一般使用$.fn.showItem封装
window.showItem = function (b, url) { $("#"+b).select2({ allowClear: true, placeholder:"Select an IG", ajax: { url: url, dataType: ‘json‘, quietMillis: 250, data: function (term, page) { term = $.trim(term); term = term === ‘‘ ? ‘‘ : term; return { q: term, //search term page: page // page number } }, results: function (data, page) { var more = (page * 10) < data.total; return { results: data.items, more: more}; } } });
其中,q为输入框输入搜索参数,page为页数,quietMillis为延迟多少毫秒发送ajax请求,data为返回json参数内容。
添加一个简单的Spring MVC控制器
/** * @param param 查询参数 * @param page 查询页数 * @return json */ @RequestMapping("select") @ResponseBody public String selection(@RequestParam("q") String param, @RequestParam("page") Long page) { return "{\"total\":4,\"param\":\"" + param + "\",\"page\":" + page + ",\"items\":" + "[{\"id\":\"tag1\",\"text\":\"tag1\"},{\"id\":\"tag2\",\"text\":\"tag2\"}," + "{\"id\":\"tag3\",\"text\":\"tag3\"},{\"id\":\"tag4\",\"text\":\"tag4\"}]}"; }
注意,如果是select标签,使用select2的ajax会报错,要改为input标签,并设置type=hidden;如果是静态的页面包含select>option的,直接用$(selector).select2();渲染即可。
更多内容请查看http://select2.github.io/select2/
时间: 2024-10-11 06:18:03