视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
datalist输入框与后台数据库数据的动态匹配
2020-11-27 15:05:53 责编:小采
文档


这次给大家带来datalist输入框与后台数据库数据的动态匹配,datalist输入框与后台数据库数据的动态匹配的注意事项有哪些,下面就是实战案例,一起来看一下。

最近项目中涉及到一个小功能,客户在选择供应商时,由于供应商数目较多(大概3000个左右),因此直接生成下拉框显然不现实,所以就更换解决方案,打算借助HTML5新增的标签datalist来实现输入中文/拼音首字母时,自动进入数据库模糊查询,并返回相应的结果,生成datalist,由于在输入框中的输入内容发生变化时,datalist会自动触发下拉框,所以使用起来比select更便捷。前端部分代码如下:

Html Code:

<!DOCTYPE html> 
<html lang="en"> 
 <head id="head"> 
 <title>库存下拉框测试</title> 
 <meta charset="utf-8"> 
 <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"> 
 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 <meta name="description" content=""> 
 <meta name="author" content=""> 
 <script src="../../Common/content/jquery-1.7.2.min.js"type="text/javascript"></script> 
 <script src="../../Common/pages/include.js" class="include" type="text/javascript"></script> 
 <script src="../../Common/js/AjaxJson.js" type="text/javascript"></script> 
 <script src="../../Common/js/Setting.js" type="text/javascript"></script> 
 <script src="../../Common/js/Paging.js" type="text/javascript"></script> 
 <script src="../../Js/warehouseManage/testyy.js" type="text/javascript"></script> 
 </head> 
 <body class=""> 
 <!--<![endif]--> 
 <p class="navbar"></p> 
 <p class="sidebar-nav"></p> 
 <p class="content"> 
 <p class="header"><h1 id="ADU" class="page-title">下拉框测试</h1></p> 
 <p class="container-fluid"> 
 <p class="row-fluid"> 
 <!-- --------------------------多条件查询--------------------------------------------- --> 
 <p class="well" id="searchDemo"> 
 <p>测试数据(默认均为d00001):<br> 昆山市配件有限公司 ksdlpjyxgs <br> 
 亿真企业有限公司 yzqyyxgs <br> 
 泰州市安誊轴皮厂(集团厂) tzsatzpc(jtc) 
 </p> 
 </p> 
 按 供应商名动态匹配(中文或者拼音均可): 
 <input list="bro" id="name" oninput="this.value=this.value.replace(/^ +| +$/g,'');search('name','bro','name')" > 
 <datalist id="bro"></datalist> 
 </p> 
 </p> 
 </p> 
 </body> 
 <!-- -----------------------footer-------------------------- --> 
 <footer class="foot"></footer> 
</html>

JavaScript Code:

var listobj=null; //datalist对象 
var requestItem=null; //后台返回的json数据中所需的key值 
var inputContent=null; //input标签对象 
/**search()说明: 
 * inputID: input标签的ID 
 * datalistID: datalist标签的ID 
 * itemName: 后台返回的json数据中所需的key值(仅需表格中中文字段的属性名) 
 * */ 
function search(inputID,datalistID,itemName) 
{ 
 inputContent=document.getElementById(inputID); 
 var datalist=document.getElementById(datalistID); 
 //防止在无输入内容的情况下产生遗留下拉选项 
 if(inputContent.value.length==0||inputContent.value==" ") 
 { 
 var sub=datalist.childNodes; 
 if(sub.length>0) 
 { 
 for (var i =sub.length-1; i>=0 ; i--) 
 { 
 datalist.removeChild(sub[i]); 
 } 
 } 
 listobj=null; 
 requestItem=null; 
 inputContent.value=null; 
 return false; 
 } 
 //全局变量赋值 
 listobj=datalist; 
 requestItem=itemName; 
 var data=""; 
 var url=""; 
 if(/^[a-zA-Z]*$/.test(inputContent.value)) 
 { 
 //检测出是拼音首字母 
 data="type=searchWords?m="+inputContent.value; //注意:data-----------需要自定义 
 url=baseurl + "/servlet/ListDemo"; //注意:url-----------需要自定义 
 sendRequest("post",url,data,getResult); 
 } 
 else if (/^[\u4e00-\u9fa5]*$/.test(inputContent.value)) 
 { 
 //检测出是中文 
 data="type=searchChinese?m="+inputContent.value; //注意:data-----------需要自定义 
 url=baseurl + "/servlet/ListDemo"; //注意:url-----------需要自定义 
 sendRequest("post",url,data,getResult); 
 } 
} 
//填写仓库下拉框 
function getResult(result) 
{ 
 var data=result; 
 var JData=eval("(" + data + ")"); 
 var maxlength=10; //注释:maxlength保证过多查询结果下只显示10条 
 if(JData.length<=10) 
 { 
 maxlength=JData.length; 
 } 
 var sub=listobj.childNodes; 
 for (var i =sub.length-1; i>=0 ; i--) 
 { 
 listobj.removeChild(sub[i]); //清空datalist所有的下拉选项 
 } 
 if(JData.length==0) //没有查询结果 
 { 
 alert("没有符合条件的结果,请重输"); 
 inputContent.value=""; //清空input输入框的值 
 return false; 
 } 
 for (var i=0;i<maxlength;i++) 
 { 
 var obj=document.createElement("option"); 
 var indexobj=JData[i]; 
 if(/^[a-zA-Z]*$/.test(inputContent.value)) 
 { 
 obj.value=indexobj[requestItem]; 
 obj.innerHTML=inputContent.value; 
 } 
 if (/^[\u4e00-\u9fa5]*$/.test(inputContent.value)) 
 { 
 obj.value=indexobj[requestItem]; 
 } 
 listobj.appendChild(obj); 
 } 
 var suffix=document.createElement("option"); 
 suffix.value=" "; 
 suffix.innerHTML="输入更多有关"+inputContent.value+"的信息"; 
 listobj.appendChild(suffix); 
 return false; 
}

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

怎样使用phonegap查找联系人

phonegap的常用事件总结

下载本文
显示全文
专题