input 配合 select 控件实现搜索功能

一 需求

select 控件实现从30万家医院中选择指定医院。如果单独使用 select 控件,会产生性能问题,会使得前端页面选择卡顿,服务器压力增加,因为需要查出30万条数据,因此需要其他控件配合使用。

方案一

采用省、市、区级联选择的方式选择出指定医院,采用该方案的缺点是: 如果不知道该医院所在的省市区,将无从选择。

方案二

使用一个 input 输入框,用来输入关键字,通过模糊查询,筛选出少量医院,从而完成医院选择。

二 核心代码

1 HTML部分

<div class="form-group pull-left" style="margin-left:15px;margin-top: 10px;">
    <input type="text" class="form-control input-sm" style="width:100px"
           id="objectKey" name="objectKey" placeholder="搜索条件">
</div>

<div class="form-group pull-left" style="margin-left:15px;margin-top: 10px;">
    <select id="visitDataId" name="visitDataId" style="width:130px">
        <option value="">请输入搜索条件</option>
    </select>
</div>

2 JS部分

实现 visitDataId 单击事件和 objectKey 的失去焦点事件

$("#visitDataId").click(function (e) {
    if (isEmpty($('#objectKey').val())) {
        alert("请输入搜索条件")
        return;
    } else {
        loadObjct();
    }
});


$("#objectKey").blur(function (e) {
    if (isEmpty($('#objectKey').val())) {
        alert("请输入搜索条件")
        return;
    } else {
        loadObjct();
    }
});

加载医院对象到 visitDataId 中

// 加载对象
function loadObjct() {
    loadServiceObj('visitDataId', curYpdRows.indexCode, curYpdRows.area);
}

// 加载医院对象
function loadServiceObj(id, indexCode, area, value) {
    var url;
    if (isEmpty($('#objectKey').val())) {
        url = 'oms/hospital/list?province=' + area + '&checkState=1';
    } else {
        url = 'oms/hospital/list?province=' + area + '&checkState=1&name_like=%25' + $('#objectKey').val() + '%25';
    }

    $.ajax({
        type: "get", // 请求方式
        url: url, // 发送请求地址
        dataType: "json",
        error: function () {
            myAlert("温馨提示", "连接服务器超时,请稍后重试...");
        },
        success: function (result) {
            if (result.total > 0) {
                $("#" + id).html("");
                $("#" + id).append("<option value=''>请选择服务对象</option>");
            } else {
                $("#" + id).html("");
                $("#" + id).append("<option value=''>请输入搜索条件</option>");
            }
            sortChinese(result.rows, 'name');
            for (var i = 0; i < result.total; i++) {
                // 加载父节点数据到新增页面
                $("#" + id).append("<option " + (value == result.rows[i].id ? "selected" : "") + " value='" + result.rows[i].id + "'>" + result.rows[i].name + "</option>");
            }
            $('#' + id).select2({
                language: "zh-CN",
                width: '200px'
            });
        }
    });
}

关闭窗口时,调用下面函数,清空相关控件数据

// 清除数据
function clearData() {
    $("#visitDataId").html("");
    $("#visitDataId").select2("val", "");
    $("#visitDataId").append("<option value=''>请输入搜索条件</option>");
    $('#objectKey').val("")
}

三 测试效果

1 进入页面效果

2 input 不输入,失去焦点,弹出对话框

3 input 不输入,单击 select 控件,弹出会话框 

4 关键字输入 协和,失去焦点后,发送Ajax请求到后台,在 select 中填充数据

5 select 控件选择满足条件的医院 北京协和医院,完成需求

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要给C# DropDownList控件添加输入搜索功能,可以使用以下步骤: 1. 在页面上添加一个文本框和一个DropDownList控件。 2. 给文本框添加一个onkeyup事件,每当用户输入内容时就会触发该事件。 ```C# <asp:TextBox ID="txtSearch" runat="server" onkeyup="searchDropDownList()"></asp:TextBox> <asp:DropDownList ID="ddlItems" runat="server"></asp:DropDownList> ``` 3. 在JavaScript中编写searchDropDownList函数,该函数将获取文本框中的内容并使用jQuery筛选DropDownList中的项。然后将过滤后的项重新绑定到DropDownList中。 ```JavaScript function searchDropDownList() { var input, filter, ul, li, a, i; input = $("#<%=txtSearch.ClientID %>").val().toUpperCase(); filter = input; var items = $("#<%=ddlItems.ClientID %> option"); for (i = 0; i < items.length; i++) { if (items[i].text.toUpperCase().indexOf(filter) > -1) { items[i].style.display = ""; } else { items[i].style.display = "none"; } } } ``` 4. 在页面加载时,以及DropDownList数据发生变化时,都需要调用searchDropDownList函数来刷新过滤结果。 ```C# protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { // 绑定DropDownList数据 BindDropDownList(); // 初始过滤 searchDropDownList(); } } protected void ddlItems_SelectedIndexChanged(object sender, EventArgs e) { // 数据变化时,刷新过滤结果 searchDropDownList(); } ``` 5. 最后,可以在CSS中为DropDownList添加样式以使其更容易被搜索。 ```CSS select { padding: 5px; margin: 0; border: 1px solid #ccc; box-shadow: none; font-size: 14px; line-height: 1.42857143; color: #555; background-color: #fff; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值