亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

純js代碼生成可搜索選擇下拉列表的實例

 更新時間:2018年01月11日 08:53:16   作者:y老油條  
下面小編就為大家分享一篇純js代碼生成可搜索選擇下拉列表的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1、因為動態(tài)的css樓主寫不出來,因此需要引入layui中的css樣式:<link rel="stylesheet" href="${ctxStatic}/layui/css/layui.css" rel="external nofollow" rel="external nofollow" >;

2、需要引入jquery-1.8.3.js版本的jquery

話不多說,代碼實現(xiàn)如下:

var selectData={};//下拉列表總數(shù)據(jù)
/**
 * 下拉搜索,多選擇等
 */
$.fn.selectDataFun=function (json) {
  selectData[$(this).attr("id")]={thisDom:null,initData:null,jsonData:null,htmlText:null,
    isShow:true,selectElements:true,overStat:true,checkedElementIds:''};
  thisSelectFun($(this)).thisDom=$(this);//設(shè)置索引為id,值為本身對象
  thisSelectFun($(this)).initData=json;//初始數(shù)據(jù)為json
/*  var isShow=true;//是否顯示
  var selectElements;//選擇的選項
  var overStat=true;//鼠標(biāo)經(jīng)過的狀態(tài)
  var checkedElementIds='';//選中項的id*/
  //根據(jù)字段生成html代碼
  setFieldTypeFun($(this));
  //請求后臺數(shù)據(jù)
  getSelectDataFun($(this));
  //生成下拉列表
  thisSelectFun($(this)).htmlText = createSelectFun($(this));//htmlText為緩存的html代碼
  //調(diào)用總方法
  callMethodFun($(this));
}
//根據(jù)對象id值獲取對象數(shù)據(jù)
function thisSelectFun(thisD) {
  if(thisD.attr("id")==''){
    alert("id值為空");
    return null;
  }
  return selectData[thisD.attr("id")]
}
//根據(jù)對象字段生成html代碼
function setFieldTypeFun(thisD){
  var thisId=thisD.attr("id");
  var fields = selectData[thisId].initData;//以id獲取該對象的所有數(shù)據(jù)
  //生成html代碼
  var title=fields.title;
  var inputId=fields.inputId;
  var selectHtml='<div class="layui-form-select">'+'<div class="layui-select-title">'+
      '<input type="hidden" id="'+inputId+'" name="'+inputId+'" />'+
    '<span>'+title+':</span>'+'&nbsp;'+'<input id="'+thisD.attr("id")+'Search" value="" hiddenValue="" class="form-control input-sm" type="text">'+
    '<i class="layui-edge"></i>'+'</div>'+'<dl class="layui-anim layui-anim-upbit" id="'+thisD.attr("id")+'dl" style=""></dl>'+
    '</div>';
  thisD.append(selectHtml);
}
//請求后臺數(shù)據(jù)
function getSelectDataFun(thisD) {
  var fields = selectData[thisD.attr("id")].initData;//以id獲取該對象的所有數(shù)據(jù)
  //判斷數(shù)據(jù)ajaxUrl中是否含有url字段
  if(fields.ajaxUrl.hasOwnProperty('url')){
    //以請求路徑為url請求后臺數(shù)據(jù),并賦值給jsonData
    thisSelectFun(thisD).jsonData=ajaxFunss(fields.ajaxUrl);
  }else {
    if($.isEmptyObject(thisSelectFun(thisD).jsonData)){
      thisSelectFun(thisD).jsonData={ code: 0, msg: "獲取成功", count: 0,data:new Array()};
    }
  }
}
//請求后臺數(shù)據(jù)
function ajaxFunss(json) {
  json['async']=false;
  json['dataType']='json';
  json['type']='post';
  var layerLoadIndex = layer.load(1); //換了種風(fēng)格
  var resultData=$.ajax(json);//發(fā)送請求
  layer.close(layerLoadIndex);
  if(resultData.status==200){//請求后臺數(shù)據(jù)成功
    return resultData.responseJSON;
  }else {
    return null;
  }
}
//生成下拉列表
function createSelectFun(thisD) {
  var json=thisSelectFun(thisD).jsonData;
  var html='';
  for(var n in json){
    html+='<dd lay-value="'+json[n].id+'" class="">'+json[n].name+'</dd>';
  }
  var id=thisD.attr("id")+'dl';
  $("#"+id).append(html);
  return html;
}
//調(diào)用總方法
function callMethodFun(thisD) {
  var iDom=thisD.find(".layui-edge").eq(0);//i元素,eq為等于的意思
  var divDom = thisD.find(".layui-form-select").eq(0);//下拉列表所在的div
  /* var isShow = thisSelectFun(thisD).isShow;//是否顯示
  var selectElement = thisSelectFun(thisD).selectElements;//選中的選項
  var overStat = thisSelectFun(thisD).overStat;//鼠標(biāo)經(jīng)過和離開狀態(tài)
  var checkedElementIds = thisSelectFun(thisD).checkedElementIds;//隱藏輸入框的value值*/
  //小三角符號綁定點擊方法
  iDom.click(function () {
    if(thisSelectFun(thisD).isShow){
      thisSelectFun(thisD).isShow=false;
      divDom.addClass("layui-form-selected");//顯示下拉列表
    }else {
      thisSelectFun(thisD).isShow=true;
      divDom.attr("class","layui-form-select");//隱藏下拉列表
    }
  });
  //dl元素綁定點擊方法
  var dlDom=thisD.find("dl").eq(0);
  var searchId = thisD.attr("id")+'Search';//搜索框id
  dlDom.on("click",'dd',function () {
    if(thisSelectFun(thisD).initData.selectType) {
      //多選
      if (thisSelectFun(thisD).selectElements) {
        thisSelectFun(thisD).selectElements = false;
        $(this).addClass("layui-this");//設(shè)置勾選狀態(tài)
        var text = $("#" + searchId).val();//輸入框的內(nèi)容
        var selectText = $(this).text() + ",";//選擇的選項
        var checkedId = $(this).attr("lay-value") + ",";//獲取選項的id
        if (text.indexOf(selectText) != -1) {//判斷輸入框中的內(nèi)容是否包含有所選的選項
          return;
        }
        thisSelectFun(thisD).checkedElementIds += checkedId;
        $("#" + searchId).val(text + selectText);
      } else {
        thisSelectFun(thisD).selectElements = true;
        $(this).attr("class", "");//清空勾選狀態(tài)
        var val = $(this).text() + ",";//勾選的選項
        var checkedId = $(this).attr("lay-value") + ',';//獲取選項的id
        var text = $("#" + searchId).val().replace(val, "");//清除勾選的選項
        $("#" + searchId).val(text);//設(shè)置
        thisSelectFun(thisD).checkedElementIds = thisSelectFun(thisD).checkedElementIds.replace(checkedId, "");//清除勾選的選項
      }
    }else {
      //單選
      //獲取已經(jīng)選中的選項,并清除
      var ddDom=thisD.find(".layui-this").eq(0);
      ddDom.attr("class","");//清除
      $(this).addClass("layui-this");//設(shè)置勾選狀態(tài)
      var selectText = $(this).text();//選擇的選項
      var checkedId = $(this).attr("lay-value");//獲取選項的id
      thisSelectFun(thisD).checkedElementIds = checkedId;
      $("#" + searchId).val(selectText);
      divDom.attr("class","layui-form-select");//隱藏下拉列表
  }
    var hiddenId=selectData[thisD.attr("id")].initData.inputId;//隱藏輸入框id
    $("#"+hiddenId).val(thisSelectFun(thisD).checkedElementIds.substring(0,thisSelectFun(thisD).checkedElementIds.length-1));
  })
  //鼠標(biāo)經(jīng)過時
  dlDom.mouseover(function () {
    thisSelectFun(thisD).overStat=false;
  });
  //鼠標(biāo)離開時
  dlDom.mouseout(function () {
    thisSelectFun(thisD).overStat=true;
  });
  //鼠標(biāo)松開時
  $("body").mouseup(function () {
    if(thisSelectFun(thisD).overStat==true){//并且overStat為true
      divDom.attr("class","layui-form-select");//隱藏下拉列表
    }
  });
  //搜索框鍵盤松開事件
  var searchDom = thisD.find("#"+searchId).eq(0);//搜索框?qū)ο?
  searchDom.keyup(function () {
    searchFunssss(thisD,searchId,divDom,dlDom);
  });
}
//根據(jù)輸入內(nèi)容搜索出匹配的選項
function searchFunssss(thisD,searchId,divDom,dlDom) {
  var val=$("#"+searchId).val();//搜索框id
  if(val.length>0){
    var conText='';//符合條件的選項
    var searchStats=false;//是否搜索到
    var htmlText=thisSelectFun(thisD).htmlText;//緩存的html代碼
    dlDom.children().each(function () {
      var thisText=$(this).text();
      var thisDom='<dd lay-value="'+$(this).attr("lay-value")+'" class="">'+thisText+'</dd>';
      if(val==thisText){
        conText+=thisDom;
        htmlText=htmlText.replace(thisDom,"");
        searchStats=true;
        var searchId = thisD.attr("id")+'Search';//搜索框id
        $("#"+searchId).val("");//清空搜索框
      }
    });
    htmlText=conText+htmlText;
    dlDom.children().remove();//刪除其子節(jié)點
    dlDom.append(htmlText);
    if(searchStats){
      divDom.addClass("layui-form-selected");//顯示下拉列表
    }
  }
}


以上js代碼放在名稱為selectFun.js的js文件中

調(diào)用如下:

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/webpage/include/taglib.jsp"%>
<html>
<head>
  <title>test</title>
  <meta name="decorator" content="default"/>
  <link rel="stylesheet" href="${ctxStatic}/layui/css/layui.css" rel="external nofollow" rel="external nofollow" >
  <script src="${ctxStatic}/selectFun.js" charset="utf-8"></script>
  <script type="text/javascript">
   $(document).ready(function() {
      $("#busgateDiv").selectDataFun({
        ajaxUrl:{url:'${ctx}/goods/goods/getStat',where:{}},//請求后臺數(shù)據(jù)的路徑
        selectType:true,//true多選,false單選
        title:'商品狀態(tài)',//字段中文名稱
        inputId:'busgate'//實體類字段
      });
      $("#sortDiv").selectDataFun({
        ajaxUrl:{url:'${ctx}/goods/goods/getSortname',where:{}},
        selectType:true,
        title:'商品大類',
        inputId:'sort'
      });
    });
  </script>
</head>
<body class="gray-bg">
  <div class="row">
  <div class="col-sm-12">
  <form:form id="searchForm" modelAttribute="goods" action="${ctx}/goods/goods/dataListFun" method="post" class="form-inline">
   <div class="form-group">
     <span>商品名稱:</span>
      <form:input path="name" htmlEscape="false" maxlength="80" class=" form-control input-sm"/>
     <span>商品代碼:</span>
      <form:input path="code" htmlEscape="false" maxlength="80" class=" form-control input-sm"/>
     <span>商品條碼:</span>
      <form:input path="code2" htmlEscape="false" maxlength="30" class=" form-control input-sm"/>
    </div>
   <br/><br/>
   <div class="form-group">
     <div class="layui-inline" id="sortDiv">
     </div>
     <div class="layui-inline" id="busgateDiv">
     </div
   </div>
  </form:form>
  <br/>
  </div>
  </div>
  
</body>
</html>

以上這篇純js代碼生成可搜索選擇下拉列表的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • js實現(xiàn)登錄彈框

    js實現(xiàn)登錄彈框

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)登錄彈框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 小程序組件之自定義頂部導(dǎo)航實例

    小程序組件之自定義頂部導(dǎo)航實例

    這篇文章主要給大家介紹了關(guān)于小程序組件之自定義頂部導(dǎo)航的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用小程序具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 使用純前端JavaScript實現(xiàn)Excel導(dǎo)入導(dǎo)出方法過程詳解

    使用純前端JavaScript實現(xiàn)Excel導(dǎo)入導(dǎo)出方法過程詳解

    這篇文章主要介紹了使用純前端JavaScript實現(xiàn)Excel導(dǎo)入導(dǎo)出方法過程詳解,文章通過示例代碼和圖文解析介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • js實現(xiàn)文本上下來回滾動

    js實現(xiàn)文本上下來回滾動

    本文主要分享了js實現(xiàn)文本上下來回滾動的示例代碼。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 詳解Javacript和AngularJS中的Promises

    詳解Javacript和AngularJS中的Promises

    這篇文章主要介紹了詳解Javacript和AngularJS中的Promises的相關(guān)資料,promise是Javascript異步編程很好的解決方案。,需要的朋友可以參考下
    2016-02-02
  • javascript入門之?dāng)?shù)組[新手必看]

    javascript入門之?dāng)?shù)組[新手必看]

    本文介紹了javascript 數(shù)組的定義和數(shù)組元素的操作,ECMAScript中的數(shù)組方法...希望對大家有所幫助
    2016-11-11
  • bootstrap jquery dataTable 異步ajax刷新表格數(shù)據(jù)的實現(xiàn)方法

    bootstrap jquery dataTable 異步ajax刷新表格數(shù)據(jù)的實現(xiàn)方法

    這篇文章主要介紹了bootstrap jquery dataTable 異步ajax刷新表格數(shù)據(jù)的實現(xiàn)方法,需要的朋友可以參考下
    2017-02-02
  • JavaScript改變CSS樣式的方法匯總

    JavaScript改變CSS樣式的方法匯總

    JavaScript修改CSS有4種方法:1.修改節(jié)點style(內(nèi)聯(lián)樣式);2.改變節(jié)點class或id;3.寫入新的css;4.替換頁面中的樣式表。今天主要給大家介紹下前2種,因為后兩種個人不是很推薦大家使用
    2015-05-05
  • 解決LayUI加上form.render()下拉框和單選以及復(fù)選框不出來的問題

    解決LayUI加上form.render()下拉框和單選以及復(fù)選框不出來的問題

    今天小編就為大家分享一篇解決LayUI加上form.render()下拉框和單選以及復(fù)選框不出來的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • UNiapp 微信小程序漸變不生效的解決方案

    UNiapp 微信小程序漸變不生效的解決方案

    這篇文章主要介紹了UNiapp 微信小程序漸變不生效的解決方案,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-07-07

最新評論