自动完成下拉框 Select2 关键字搜索的实例(本地数据与异步获取)

最终效果


首先我们要有一个基础的文本框

<input name="test" type="hidden" id="userSelect" style="width: 600px" value="上海^漳州" />

使用本地数据的写法

$(‘#userSelect‘).select2({
    placeholder          : "请输入",
    minimumInputLength   : 1,
    multiple             : true,
    separator            : "^",                             // 分隔符
    maximumSelectionSize : 5,                               // 限制数量
    initSelection        : function (element, callback) {   // 初始化时设置默认值
        var data = [];
        $(element.val().split("^")).each(function () {
            data.push({ id: this, text: this });
        });
        callback(data);
    },
    createSearchChoice   : function(term, data) {           // 创建搜索结果(使用户可以输入匹配值以外的其它值)
        return { id: term, text: term };
    },
    formatSelection : function (item) { return item.id; },  // 选择结果中的显示
    formatResult    : function (item) { return item.id; },  // 搜索列表中的显示
    data: {
        results: [
            { id: "北京", text: "bj beijin 北京" },
            { id: "厦门", text: "xm xiamen 厦门" },
            { id: "福州", text: "fz fuzhou 福州" }
        ]
    }
});

使用异步数据的写法

脚本

$(‘#userSelect‘).select2({
    placeholder          : "请输入",
    minimumInputLength   : 1,
    multiple             : true,
    separator            : "^",                             // 分隔符
    maximumSelectionSize : 5,                               // 限制数量
    initSelection        : function (element, callback) {   // 初始化时设置默认值
        var data = [];
        $(element.val().split("^")).each(function () {
            data.push({id: this, text: this});
        });
        callback(data);
    },
    createSearchChoice   : function(term, data) {           // 创建搜索结果(使用户可以输入匹配值以外的其它值)
        return { id: term, text: term };
    },
    formatSelection : function (item) { return item.id; },  // 选择结果中的显示
    formatResult    : function (item) { return item.id; },  // 搜索列表中的显示
    ajax : {
        url      : "test-api",              // 异步请求地址
        dataType : "json",                  // 数据类型
        data     : function (term, page) {  // 请求参数(GET)
            return { q: term };
        },
        results      : function (data, page) { return data; },  // 构造返回结果
        escapeMarkup : function (m) { return m; }               // 字符转义处理
    }
});

服务端(这里以 Laravel 为例)

Route::get(‘test-api‘, function () {

    $q = Input::get(‘q‘);

    // do something ...

    return array(
        // ‘more‘ => false,
        ‘results‘ => array(
            array(‘id‘ => ‘北京‘, ‘text‘ => ‘bj beijin 北京‘),
            array(‘id‘ => ‘厦门‘, ‘text‘ => ‘xm xiamen 厦门‘),
            array(‘id‘ => ‘福州‘, ‘text‘ => ‘fz fuzhou 福州‘),
        ),
    );

});
时间: 2024-10-08 11:06:23

自动完成下拉框 Select2 关键字搜索的实例(本地数据与异步获取)的相关文章

美化的下拉框select2

今天,向大家介绍一款简单.实用的bootstrap风格的JQuery插件--select2. select2是对select下拉框的改进.如果你对界面的美感又一定要求,你一定会抛弃select,坚决的选择select2阵营. select2的使用非常简单.我将它在项目中的应用总结成了两个demo,你一定会为它的简单实用大为震惊. github上入门级demo:http://select2.github.io/ <%@ page language="java" contentTyp

自定义弹出窗口,实现可输入可过滤自动选择下拉框

/** jQuery dialog windows * author : piyg Copyright(c) : 2014-09-01 09:28 Version 1.0-pre 自定义定时定频弹出窗口: 用法: 在自身jsp页面调用 showDialog(title,fn1,fn2),showProcessDialog(title,fn1,fn2)方法. title: 自定义窗口头信息. fn1 ,fn2 自定义回调函数,分别绑定2个按钮事件 fn1: "继续提交"按钮事件. fn2

thinkphp中在编辑一条数据时不用JS实现自动选中下拉框

<select name="auth_pid" id="auth_pid"> <option value="0" >--请选择--</option> <volist name="auth_list" id="item"> <eq name="item.auth_id" value="$auth_info.auth_pid&q

自动提示下拉框代码

var searchtext = $("#xmmc", dialog); var $autocomplete = $("<ul class='autocomplete'></ul>").hide().insertAfter(searchtext); searchtext.keyup(function () { var stext = searchtext.attr("value"); $.ajax({ url: '/dat

使用jquery select2实现下拉框搜索功能

由于公司后台系统下拉框数据量太多了,用户操作起来要不方便所以增加了下拉框里面一个搜索功能 1从官网下载jquery select2 下来 地址https://select2.github.io/ 2:引进到自己的java工程里面 3:在jsp页面进行引进来,在这里我们只需要三个文件就可以了 4:jsp 页面加载时直接调用 效果如下:

让Jayrock插上翅膀(加入输入输出参数注释,测试页面有注释,下拉框可以搜索)

继上一篇文章介绍了Jayrock组件开发接口的具体步骤和优缺点之后,今天给大家带来的就是,如何修复这些缺点. 首先来回顾一下修复的缺点有哪些: 1.每个接口的只能写大概的注释,不能分开来写,如接口的主要功能,输入的参数是什么意思,输出的字段是什么意思. 2.测试页面中,针对每个接口的功能注释是没有的,这样非常不方便,因为接口一多,开发人员很难快速的定位要使用的接口. 3.测试页面中,选择的下拉框不能输入搜索,只能一个个选择,接口一多,绝对是个悲剧的活. 那么下面就展示我是如何修复这些缺点的: 1

行内表单 在统一行显示搜索框 下拉框 按钮

05===> 在同一行显示 搜索表单 下拉框表单 搜索按钮 清空按钮 使用了[行内表单] inline 属性可以让表单域变为行内的表单域 (让表单显示在同一行) <el-form ref="formInline" :inline="true" :model="formInline" class="demo-form-inline"></el-form> demo-form-inline是自带的 f

自定义SWT控件一之自定义单选下拉框

一.自定义下拉控件 自定义的下拉框,是自定义样式的,其中的下拉框使用的是独立的window,非复选框的下拉框双击单机其它区域或选择完之后,独立window构成的下拉框会自动消失. package com.view.control.select; import java.util.ArrayList; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ScrolledComposite;

php 二级下拉框

1,以省.市为例子,二级下拉框,先赋上页面,html部分如下: <div class="form-group"> <label for="inputEmail3" class="col-sm-2 control-label">城市</label> <div class="col-sm-10"> <select name="province" class=