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

x33g5p2x  于2021-11-11 转载在 其他  
字(2.7k)|赞(0)|评价(0)|浏览(216)

一 需求

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

方案一

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

方案二

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

二 核心代码

1 HTML部分

  1. <div class="form-group pull-left" style="margin-left:15px;margin-top: 10px;">
  2. <input type="text" class="form-control input-sm" style="width:100px"
  3. id="objectKey" name="objectKey" placeholder="搜索条件">
  4. </div>
  5. <div class="form-group pull-left" style="margin-left:15px;margin-top: 10px;">
  6. <select id="visitDataId" name="visitDataId" style="width:130px">
  7. <option value="">请输入搜索条件</option>
  8. </select>
  9. </div>

2 JS部分

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

  1. $("#visitDataId").click(function (e) {
  2. if (isEmpty($('#objectKey').val())) {
  3. alert("请输入搜索条件")
  4. return;
  5. } else {
  6. loadObjct();
  7. }
  8. });
  9. $("#objectKey").blur(function (e) {
  10. if (isEmpty($('#objectKey').val())) {
  11. alert("请输入搜索条件")
  12. return;
  13. } else {
  14. loadObjct();
  15. }
  16. });

加载医院对象到 visitDataId 中

  1. // 加载对象
  2. function loadObjct() {
  3. loadServiceObj('visitDataId', curYpdRows.indexCode, curYpdRows.area);
  4. }
  5. // 加载医院对象
  6. function loadServiceObj(id, indexCode, area, value) {
  7. var url;
  8. if (isEmpty($('#objectKey').val())) {
  9. url = 'oms/hospital/list?province=' + area + '&checkState=1';
  10. } else {
  11. url = 'oms/hospital/list?province=' + area + '&checkState=1&name_like=%25' + $('#objectKey').val() + '%25';
  12. }
  13. $.ajax({
  14. type: "get", // 请求方式
  15. url: url, // 发送请求地址
  16. dataType: "json",
  17. error: function () {
  18. myAlert("温馨提示", "连接服务器超时,请稍后重试...");
  19. },
  20. success: function (result) {
  21. if (result.total > 0) {
  22. $("#" + id).html("");
  23. $("#" + id).append("<option value=''>请选择服务对象</option>");
  24. } else {
  25. $("#" + id).html("");
  26. $("#" + id).append("<option value=''>请输入搜索条件</option>");
  27. }
  28. sortChinese(result.rows, 'name');
  29. for (var i = 0; i < result.total; i++) {
  30. // 加载父节点数据到新增页面
  31. $("#" + id).append("<option " + (value == result.rows[i].id ? "selected" : "") + " value='" + result.rows[i].id + "'>" + result.rows[i].name + "</option>");
  32. }
  33. $('#' + id).select2({
  34. language: "zh-CN",
  35. width: '200px'
  36. });
  37. }
  38. });
  39. }

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

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

三 测试效果

1 进入页面效果

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

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

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

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

相关文章