最新的h5标签datalis的使用方法介绍

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.jstype=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;  
}

【相关推荐】

1. 免费h5在线视频教程

2. HTML5 完整版手册

3. php.cn原创html5视频教程

4. 分享h5中alt和title的区别与用法

5. H5 video标签只能放声音不能放视频的解决办法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


HTML5和CSS3实现3D展示商品信息的代码
利用HTML5中的Canvas绘制笑脸的代码
Html5剪切板功能的实现
如何通过HTML5触摸事件实现移动端简易进度条
Html5移动端获奖无缝滚动动画实现
关于HTML5和CSS3实现机器猫的代码
HTML5使用DOM进行自定义控制
使用HTML5 Canvas绘制阴影效果的方法
使用PHP和HTML5 FormData实现无刷新文件上传
如何解决HTML5 虚拟键盘出现挡住输入框的问题
HTML5中div和section以及article的区别分析
html5和CSS 实现禁止IOS长按复制粘贴功能
html5 touch事件实现触屏页面上下滑动
canvas 模拟实现电子彩票刮刮乐的代码
HTML5 Plus 实现手机APP拍照或相册选择图片上传的功能
Android自定义环形LoadingView效果
HTML5 canvas绘制五角星的方法
html5使用html2canvas实现浏览器截图
使用Canvas处理图片的方法介绍
利用Canvas模仿百度贴吧客户端loading小球的方法