最近项目中涉及到一个小功能,客户在选择供应商时,由于供应商数目较多(大概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]--> <div class="navbar"></div> <div class="sidebar-nav"></div> <div class="content"> <div class="header"><h1 id="ADU" class="page-title">下拉框测试</h1></div> <div class="container-fluid"> <div class="row-fluid"> <!-- --------------------------多条件查询--------------------------------------------- --> <div class="well" id="searchDemo"> <p>测试数据(默认均为d00001):<br> 昆山市大陆配件有限公司 ksdlpjyxgs <br> 亿真企业有限公司 yzqyyxgs <br> 泰州市安誊轴皮厂(集团厂) tzsatzpc(jtc) </p> </div> 按 供应商名动态匹配(中文或者拼音均可): <input list="bro" id="name" oninput="this.value=this.value.replace(/^ +| +$/g,'');search('name','bro','name')" > <datalist id="bro"></datalist> </div> </div> </div> </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; }
以上所述是小编给大家介绍的Html5新标签datalist实现输入框与后台数据库数据的动态匹配,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】