찾다
웹 프론트엔드JS 튜토리얼검색 가능한 선택 드롭다운 목록 방법을 구현하는 순수 js 코드

이 글은 주로 순수 js 코드를 사용하여 검색 및 선택 가능한 드롭다운 목록을 생성하는 예제를 공유합니다. 이는 좋은 참고 가치가 있으며 모든 사람에게 도움이 되기를 바랍니다. 편집자를 따라 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.

1. 작성자는 동적 CSS를 작성할 수 없으므로layui에 CSS 스타일을 도입해야 합니다.

<link>;

2. jquery의 jquery-1.8.3.js 버전을 도입해야 합니다

. 코드 구현은 다음과 같습니다.

var selectData={};//下拉列表总数据
/**
 * 下拉搜索,多选择等
 */
$.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);//设置索引为id,值为本身对象
  thisSelectFun($(this)).initData=json;//初始数据为json
/*  var isShow=true;//是否显示
  var selectElements;//选择的选项
  var overStat=true;//鼠标经过的状态
  var checkedElementIds='';//选中项的id*/
  //根据字段生成html代码
  setFieldTypeFun($(this));
  //请求后台数据
  getSelectDataFun($(this));
  //生成下拉列表
  thisSelectFun($(this)).htmlText = createSelectFun($(this));//htmlText为缓存的html代码
  //调用总方法
  callMethodFun($(this));
}
//根据对象id值获取对象数据
function thisSelectFun(thisD) {
  if(thisD.attr("id")==''){
    alert("id值为空");
    return null;
  }
  return selectData[thisD.attr("id")]
}
//根据对象字段生成html代码
function setFieldTypeFun(thisD){
  var thisId=thisD.attr("id");
  var fields = selectData[thisId].initData;//以id获取该对象的所有数据
  //生成html代码
  var title=fields.title;
  var inputId=fields.inputId;
  var selectHtml='<p>'+'</p><p>'+
      '<input>'+
    '<span>'+title+':</span>'+' '+'<input>'+
    '<i></i>'+'</p>'+'
'+     '';   thisD.append(selectHtml); } //请求后台数据 function getSelectDataFun(thisD) {   var fields = selectData[thisD.attr("id")].initData;//以id获取该对象的所有数据   //判断数据ajaxUrl中是否含有url字段   if(fields.ajaxUrl.hasOwnProperty('url')){     //以请求路径为url请求后台数据,并赋值给jsonData     thisSelectFun(thisD).jsonData=ajaxFunss(fields.ajaxUrl);   }else {     if($.isEmptyObject(thisSelectFun(thisD).jsonData)){       thisSelectFun(thisD).jsonData={ code: 0, msg: "获取成功", count: 0,data:new Array()};     }   } } //请求后台数据 function ajaxFunss(json) {   json['async']=false;   json['dataType']='json';   json['type']='post';   var layerLoadIndex = layer.load(1); //换了种风格   var resultData=$.ajax(json);//发送请求   layer.close(layerLoadIndex);   if(resultData.status==200){//请求后台数据成功     return resultData.responseJSON;   }else {     return null;   } } //生成下拉列表 function createSelectFun(thisD) {   var json=thisSelectFun(thisD).jsonData;   var html='';   for(var n in json){     html+='
'+json[n].name+'
';   }   var id=thisD.attr("id")+'dl';   $("#"+id).append(html);   return html; } //调用总方法 function callMethodFun(thisD) {   var iDom=thisD.find(".layui-edge").eq(0);//i元素,eq为等于的意思   var pDom = thisD.find(".layui-form-select").eq(0);//下拉列表所在的p   /* var isShow = thisSelectFun(thisD).isShow;//是否显示   var selectElement = thisSelectFun(thisD).selectElements;//选中的选项   var overStat = thisSelectFun(thisD).overStat;//鼠标经过和离开状态   var checkedElementIds = thisSelectFun(thisD).checkedElementIds;//隐藏输入框的value值*/   //小三角符号绑定点击方法   iDom.click(function () {     if(thisSelectFun(thisD).isShow){       thisSelectFun(thisD).isShow=false;       pDom.addClass("layui-form-selected");//显示下拉列表     }else {       thisSelectFun(thisD).isShow=true;       pDom.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");//设置勾选状态         var text = $("#" + searchId).val();//输入框的内容         var selectText = $(this).text() + ",";//选择的选项         var checkedId = $(this).attr("lay-value") + ",";//获取选项的id         if (text.indexOf(selectText) != -1) {//判断输入框中的内容是否包含有所选的选项           return;         }         thisSelectFun(thisD).checkedElementIds += checkedId;         $("#" + searchId).val(text + selectText);       } else {         thisSelectFun(thisD).selectElements = true;         $(this).attr("class", "");//清空勾选状态         var val = $(this).text() + ",";//勾选的选项         var checkedId = $(this).attr("lay-value") + ',';//获取选项的id         var text = $("#" + searchId).val().replace(val, "");//清除勾选的选项         $("#" + searchId).val(text);//设置         thisSelectFun(thisD).checkedElementIds = thisSelectFun(thisD).checkedElementIds.replace(checkedId, "");//清除勾选的选项       }     }else {       //单选       //获取已经选中的选项,并清除       var ddDom=thisD.find(".layui-this").eq(0);       ddDom.attr("class","");//清除       $(this).addClass("layui-this");//设置勾选状态       var selectText = $(this).text();//选择的选项       var checkedId = $(this).attr("lay-value");//获取选项的id       thisSelectFun(thisD).checkedElementIds = checkedId;       $("#" + searchId).val(selectText);       pDom.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));   })   //鼠标经过时   dlDom.mouseover(function () {     thisSelectFun(thisD).overStat=false;   });   //鼠标离开时   dlDom.mouseout(function () {     thisSelectFun(thisD).overStat=true;   });   //鼠标松开时   $("body").mouseup(function () {     if(thisSelectFun(thisD).overStat==true){//并且overStat为true       pDom.attr("class","layui-form-select");//隐藏下拉列表     }   });   //搜索框键盘松开事件   var searchDom = thisD.find("#"+searchId).eq(0);//搜索框对象   searchDom.keyup(function () {     searchFunssss(thisD,searchId,pDom,dlDom);   }); } //根据输入内容搜索出匹配的选项 function searchFunssss(thisD,searchId,pDom,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='
'+thisText+'
';       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();//删除其子节点     dlDom.append(htmlText);     if(searchStats){       pDom.addClass("layui-form-selected");//显示下拉列表     }   } }


위 js 코드는 selectFun.js

호출은 다음과 같습니다.




  <title>test</title>
  <meta>
  <link>
  <script></script>
  <script>
   $(document).ready(function() {
      $("#busgatep").selectDataFun({
        ajaxUrl:{url:&#39;${ctx}/goods/goods/getStat&#39;,where:{}},//请求后台数据的路径
        selectType:true,//true多选,false单选
        title:&#39;商品状态&#39;,//字段中文名称
        inputId:&#39;busgate&#39;//实体类字段
      });
      $("#sortp").selectDataFun({
        ajaxUrl:{url:&#39;${ctx}/goods/goods/getSortname&#39;,where:{}},
        selectType:true,
        title:&#39;商品大类&#39;,
        inputId:&#39;sort&#39;
      });
    });
  </script>


  <p>
  </p><p>
  <form>
   <p>
     <span>商品名称:</span>
      <input>
     <span>商品代码:</span>
      <input>
     <span>商品条码:</span>
      <input>
    </p>
   <br><br>
   <p>
     </p>
<p>
     </p>
     <p>
     </p>   </form></p>
  
  <br>
  
  
  

관련 권장 사항:

easyUI drop -다운 목록 클릭 이벤트 사용 예 공유

드롭다운 목록 기능의 jquery 및 CSS 구현 튜토리얼

HTML 드롭다운 목록 태그의 javascript 작업

위 내용은 검색 가능한 선택 드롭다운 목록 방법을 구현하는 순수 js 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
브라우저 너머 : 실제 세계의 JavaScript브라우저 너머 : 실제 세계의 JavaScriptApr 12, 2025 am 12:06 AM

실제 세계에서 JavaScript의 응용 프로그램에는 서버 측 프로그래밍, 모바일 애플리케이션 개발 및 사물 인터넷 제어가 포함됩니다. 1. 서버 측 프로그래밍은 Node.js를 통해 실현되며 동시 요청 처리에 적합합니다. 2. 모바일 애플리케이션 개발은 재교육을 통해 수행되며 크로스 플랫폼 배포를 지원합니다. 3. Johnny-Five 라이브러리를 통한 IoT 장치 제어에 사용되며 하드웨어 상호 작용에 적합합니다.

Next.js (백엔드 통합)로 멀티 테넌트 SAAS 애플리케이션 구축Next.js (백엔드 통합)로 멀티 테넌트 SAAS 애플리케이션 구축Apr 11, 2025 am 08:23 AM

일상적인 기술 도구를 사용하여 기능적 다중 테넌트 SaaS 응용 프로그램 (Edtech 앱)을 구축했으며 동일한 작업을 수행 할 수 있습니다. 먼저, 다중 테넌트 SaaS 응용 프로그램은 무엇입니까? 멀티 테넌트 SAAS 응용 프로그램은 노래에서 여러 고객에게 서비스를 제공 할 수 있습니다.

Next.js (Frontend Integration)를 사용하여 멀티 테넌트 SaaS 응용 프로그램을 구축하는 방법Next.js (Frontend Integration)를 사용하여 멀티 테넌트 SaaS 응용 프로그램을 구축하는 방법Apr 11, 2025 am 08:22 AM

이 기사에서는 Contrim에 의해 확보 된 백엔드와의 프론트 엔드 통합을 보여 주며 Next.js를 사용하여 기능적인 Edtech SaaS 응용 프로그램을 구축합니다. Frontend는 UI 가시성을 제어하기 위해 사용자 권한을 가져오고 API가 역할 기반을 준수하도록합니다.

JavaScript : 웹 언어의 다양성 탐색JavaScript : 웹 언어의 다양성 탐색Apr 11, 2025 am 12:01 AM

JavaScript는 현대 웹 개발의 핵심 언어이며 다양성과 유연성에 널리 사용됩니다. 1) 프론트 엔드 개발 : DOM 운영 및 최신 프레임 워크 (예 : React, Vue.js, Angular)를 통해 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축합니다. 2) 서버 측 개발 : Node.js는 비 차단 I/O 모델을 사용하여 높은 동시성 및 실시간 응용 프로그램을 처리합니다. 3) 모바일 및 데스크탑 애플리케이션 개발 : 크로스 플랫폼 개발은 개발 효율을 향상시키기 위해 반응 및 전자를 통해 실현됩니다.

JavaScript의 진화 : 현재 동향과 미래 전망JavaScript의 진화 : 현재 동향과 미래 전망Apr 10, 2025 am 09:33 AM

JavaScript의 최신 트렌드에는 Typescript의 Rise, 현대 프레임 워크 및 라이브러리의 인기 및 WebAssembly의 적용이 포함됩니다. 향후 전망은보다 강력한 유형 시스템, 서버 측 JavaScript 개발, 인공 지능 및 기계 학습의 확장, IoT 및 Edge 컴퓨팅의 잠재력을 포함합니다.

Demystifying JavaScript : 그것이하는 일과 중요한 이유Demystifying JavaScript : 그것이하는 일과 중요한 이유Apr 09, 2025 am 12:07 AM

JavaScript는 현대 웹 개발의 초석이며 주요 기능에는 이벤트 중심 프로그래밍, 동적 컨텐츠 생성 및 비동기 프로그래밍이 포함됩니다. 1) 이벤트 중심 프로그래밍을 사용하면 사용자 작업에 따라 웹 페이지가 동적으로 변경 될 수 있습니다. 2) 동적 컨텐츠 생성을 사용하면 조건에 따라 페이지 컨텐츠를 조정할 수 있습니다. 3) 비동기 프로그래밍은 사용자 인터페이스가 차단되지 않도록합니다. JavaScript는 웹 상호 작용, 단일 페이지 응용 프로그램 및 서버 측 개발에 널리 사용되며 사용자 경험 및 크로스 플랫폼 개발의 유연성을 크게 향상시킵니다.

Python 또는 JavaScript가 더 좋습니까?Python 또는 JavaScript가 더 좋습니까?Apr 06, 2025 am 12:14 AM

Python은 데이터 과학 및 기계 학습에 더 적합한 반면 JavaScript는 프론트 엔드 및 풀 스택 개발에 더 적합합니다. 1. Python은 간결한 구문 및 풍부한 라이브러리 생태계로 유명하며 데이터 분석 및 웹 개발에 적합합니다. 2. JavaScript는 프론트 엔드 개발의 핵심입니다. Node.js는 서버 측 프로그래밍을 지원하며 풀 스택 개발에 적합합니다.

JavaScript를 어떻게 설치합니까?JavaScript를 어떻게 설치합니까?Apr 05, 2025 am 12:16 AM

JavaScript는 이미 최신 브라우저에 내장되어 있기 때문에 설치가 필요하지 않습니다. 시작하려면 텍스트 편집기와 브라우저 만 있으면됩니다. 1) 브라우저 환경에서 태그를 통해 HTML 파일을 포함하여 실행하십시오. 2) Node.js 환경에서 Node.js를 다운로드하고 설치 한 후 명령 줄을 통해 JavaScript 파일을 실행하십시오.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경