Browse Source

增加不保留上次选择的动态加载数据的select支持方法

hurugang 3 years ago
parent
commit
aa607aba46

+ 71 - 2
src/main/resources/static/js/common/select-util.js

@@ -1,6 +1,31 @@
 //# sourceURL=select-util.js
 /**
- * 根据输入的值动态查询select的数数据源
+ * 根据输入的值动态查询select的数数据源,记录上次查询条件选的数据
+ * @param id select元素的ID
+ * @param url 动态请求地址
+ */
+function dynamicSelectWithOri(id, url) {
+    var inputObj = $("#" + id).parent().find("div.bs-searchbox").find("input");
+    //中文会导致查询混乱
+    $(inputObj).on('compositionstart', function () {
+        $(inputObj).attr("isNeedPrevent", true);
+    });
+    $(inputObj).on('compositionend', function () {
+        $(inputObj).attr("isNeedPrevent", false);
+    });
+
+    $(inputObj).keyup(function () {
+        var isNeedPrevent = $(inputObj).attr("isNeedPrevent");
+        if (isNeedPrevent == "true") {
+            return;
+        }
+        debounce(dynamicSelectImediateWithOri(inputObj, url, id), 300, true)
+    });
+}
+
+
+/**
+ * 根据输入的值动态查询select的数数据源,不保留上次的内容
  * @param id select元素的ID
  * @param url 动态请求地址
  */
@@ -24,12 +49,56 @@ function dynamicSelect(id, url) {
 }
 
 /**
- * 根据输入的值动态查询select的数数据源 不防抖
+ * 根据输入的值动态查询select的数数据源 不防抖 单选
  * @param inputObj
  * @param url
  * @param id
  */
 function dynamicSelectImmediate(inputObj, url, id) {
+//键入的值
+    var inputValue = $(inputObj).val();
+    //判定键入的值不为空,才调用ajax
+    if (inputValue != '') {
+        $.ajax({
+            type: 'GET',
+            url: url + inputValue,
+            dataType: "Json",
+            success: function (res) {
+                if (res == '401' || res == 401) {
+                    window.location.href = '/thmz/login/view'
+                    return;
+                }
+                if (res.code == 0) {
+                    $("#" + id).empty();
+                    res.data.forEach(function (item, index) {
+                        var html = '<option value="' + item.code + '">' + item.name + '</option>';
+                        $("#" + id).append(html);
+                    });
+                    $("#" + id).selectpicker('refresh');
+                } else {
+                    errorMesage(res);
+                }
+            }
+        })
+    } else {
+        $("#" + id).empty();
+        $("#" + id).selectpicker('refresh');
+    }
+}
+
+
+
+
+
+
+
+/**
+ * 根据输入的值动态查询select的数数据源,并且可以保留上次选择的数据, 不防抖
+ * @param inputObj
+ * @param url
+ * @param id
+ */
+function dynamicSelectImediateWithOri(inputObj, url, id) {
 //键入的值
     var inputValue = $(inputObj).val();
     //判定键入的值不为空,才调用ajax

+ 2 - 1
src/main/resources/static/js/mz/clinic.js

@@ -2753,7 +2753,8 @@ function setSelectSize() {
         dropuAuto: false,
         size: 10
     });
-    dynamicSelect("editZd",'/thmz/getAllZdIcdCommonParams?commonParams=');
+    //select 从后台加载数据,并保留之前选择的内容
+    dynamicSelectWithOri("editZd",'/thmz/getAllZdIcdCommonParams?commonParams=');
 }
 
 /**

+ 1 - 1
src/main/resources/templates/mz/clinic.html

@@ -2879,7 +2879,7 @@
                                     呼吸<input id="bl_breathe" type="number" style="width: 40px;border: none !important;border-radius: 0 !important;border-bottom: 1px solid #ddd !important;color: red;"/>次/分&nbsp;&nbsp;</br>
                                     血压<input id="bl_pressure_high" type="number" style="width: 40px;border: none !important;border-radius: 0 !important;border-bottom: 1px solid #ddd !important;color: red;"/>&nbsp;/
                                     <input id="bl_pressure_floor" type="number" style="width: 40px;border: none !important;border-radius: 0 !important;border-bottom: 1px solid #ddd !important;color: red;"/>mmhg
-                                    血压(左)<input
+                                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;血压(左)<input
                                         id="bl_pressure_high_left" type="number" style="width: 40px;border: none !important;border-radius: 0 !important;border-bottom: 1px solid #ddd !important;color: red;"/>&nbsp;/
                                     <input id="bl_pressure_floor_left" type="number" style="width: 40px;border: none !important;border-radius: 0 !important;border-bottom: 1px solid #ddd !important;color: red;"/>mmhg
                                 </div>