이번에는 데이터 목록 입력 상자와 배경 데이터베이스 데이터의 동적 매칭에 대해 다루겠습니다. 데이터 목록 입력 상자와 배경 데이터베이스 데이터의 동적 매칭에 대한 주의사항은 무엇입니까? 다음은 실제 사례입니다. 보세요.
최근 프로젝트에는 작은 기능이 포함되어 있습니다. 고객이 공급자를 선택할 때 공급자 수가 많기 때문에(약 3,000개) 드롭다운 상자를 직접 생성하는 것은 분명히 비현실적이므로 솔루션을 변경하고 새로운 것을 사용할 계획입니다. HTML5 중국어/병음의 첫 글자를 입력할 때 데이터베이스 퍼지 쿼리를 자동으로 입력하고 해당 결과를 반환하여 데이터 목록을 생성하도록 태그 데이터 목록을 추가합니다. 입력 상자의 입력 내용이 변경되므로 데이터 목록이 자동으로 드롭을 트리거합니다. 다운박스를 선택하시면 사용이 더 편리합니다. 프런트 엔드 코드는 다음과 같습니다.
Html 코드:
<!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 코드:
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; }
이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 다른 관련 기사를 주목하시기 바랍니다. PHP 중국어 웹사이트에서!
추천 자료:
위 내용은 데이터 목록 입력 상자와 배경 데이터베이스 데이터의 동적 매칭의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!