Html5新标签datalist相关用法介绍
导读:收集整理的这篇文章主要介绍了Html5新标签datalist相关用法介绍,觉得挺不错的,现在分享给大家,也给大家做个参考。HTML5新增的标签datalist实现输入中文/拼音首字母时,自动进入数据库模糊查询,并返回相应的结果,生成data...
收集整理的这篇文章主要介绍了Html5新标签datalist相关用法介绍,觉得挺不错的,现在分享给大家,也给大家做个参考。HTML5新增的标签datalist实现输入中文/拼音首字母时,自动进入数据库模糊查询,并返回相应的结果,生成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; imaxlength; 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相关用法介绍的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Html5新标签datalist相关用法介绍
本文地址: https://pptw.com/jishu/583609.html