基于?jquery-cxselect?實現(xiàn)下拉聯(lián)動效果功能實現(xiàn)
寫在前面
下拉聯(lián)動效果是一個老生常談的問題了,實現(xiàn)方式也是多種多樣。最近遇到類似的需求,這里整理一下。
下拉聯(lián)動實現(xiàn)基于jquery的一款聯(lián)動下拉菜單插件 jquery-cxselect
功能實現(xiàn)
1、導入腳本
<!-- jQueyr 腳本 --> <script src="/js/jquery.min.js?v=3.6.3"></script> <!-- jQueyr 下拉插件腳本 --> <script src="/jsjquery.cxselect.min.js?v=1.4.2"></script>
2、編寫頁面組件
頁面組件布局使用的是 BootStrap。
注意:div 組件的 id 屬性,后面腳本會用到
<div class="form-group" id="pca"> <label class="col-sm-2 control-label is-required">省市縣:</label> <div class="col-sm-3"> <!-- data-value 可以設(shè)置下拉框的默認選擇值 --> <select name="province" class="province form-control m-b" required data-value=""></select> </div> <div class="col-sm-3"> <select name="city" class="city form-control m-b" required data-value=""></select> </div> <div class="col-sm-3"> <select name="area" class="area form-control m-b" required data-value=""></select> </div> <div class="col-sm-3 col-sm-offset-2"> <select name="street" class="street form-control m-b" required data-value=""></select> </div> </div>
3、JSON 數(shù)據(jù)準備
這里準備了一個JSON文件 ,點擊連接直接下載放到項目中即可。下面羅列一部分摘要。
[ { "code": "11", "name": "北京市", "children" : [ { "code" : "1101", "name" : "市轄區(qū)", "children" : [ { "code" : "110101", "name" : "東城區(qū)" , "children" : [ { "code" : "110101001", "name" : "東華門街道" }, { "code" : "110101002", "name" : "景山街道" }, ] } ] } ] } ]
4、腳本編寫
<script th:inline="javascript"> /* 讀取 json 文件,轉(zhuǎn)換為 JSON 數(shù)組,方便遍歷 */ $.getJSON('/pcas-code.json', function(data){ // 基于 ID 選擇器,選擇級聯(lián)組件的父容器,調(diào)用插件的 cxSelect 方法,傳遞參數(shù)。 $('#pca').cxSelect({ // 選擇聯(lián)動組件,以 class 選擇器選擇 selects: ['province', 'city', 'area', 'street'], // 是否為必選 required: false, // 從 JSON 數(shù)據(jù)中獲取指定 key 的值,給 option 標簽的 value 賦值 jsonValue: 'code', // 從 JSON 數(shù)據(jù)中獲取指定 key 的值,給 option 選項賦值 jsonName: 'name', // 從 JSON 數(shù)據(jù)中獲取指定 key 的值,獲取聯(lián)動的子數(shù)據(jù) jsonSub: 'children', data: data, }); }); </script>
補充:Jquery cxSelect多級聯(lián)動下拉組件的使用
Jquery cxSelect多級聯(lián)動下拉組件的使用
雖然,現(xiàn)在的項目大都不直接使用jquery進行開發(fā)了。但是身為后端的我依然遇到了,單體項目,themeleaf模板全棧開發(fā)
下面記錄一下如何使用(文檔這些對我們這些后端來說不是很友好)
1.首先頁面中要引入它的js(我這里是themeleaf)
<th:block th:include="include :: jquery-cxselect-js" />
js直接:
<script src="jquery.js"></script> <script src="jquery.cxselect.js"></script>
2.級聯(lián)的select們必須用一個dom(id可以隨意取)包裹起來,必須要有class屬性
<!-- select 必須放在元素 id="element_id" 的內(nèi)部,不限層級 select 的 class 任意取值,也可以附加多個 class,如 class="province otherclass",在調(diào)用時只需要輸入其中一個即可,但是不能重復(fù) --> <div id="element_id"> <select class="curriculum"></select> <select class="chapter"></select> </div>
3.發(fā)請求獲取數(shù)據(jù),數(shù)據(jù)是json(級聯(lián)下拉數(shù)據(jù)類似于多層循環(huán),java中就是對象套list,list里面的對象再套list),$(’#element_id’)對應(yīng)最外層的id屬性值
// 通過默認url獲取 var urlSelect = 'selectdata'; //設(shè)置請求路徑 $.cxSelect.defaults.url = urlSelect; $('#element_id').cxSelect({ selects: ['curriculum', 'chapter'], nodata: 'none', jsonSub: 'chapterList' });
selects數(shù)組中的數(shù)據(jù),就是select下拉框的class屬性的值,順序很重要,比如數(shù)組第一個值就對應(yīng)第一個下拉框
? jsonSub:子select的list數(shù)據(jù)字段(這里是統(tǒng)一指定,即設(shè)置后每一個子級的數(shù)據(jù)字段都叫這個名字),不指定該屬性,它默認會去找“s”這個字段
4.需要注意的是,下拉框我們希望瀏覽name,選擇id
<select class="curriculum" name="curriculumId" data-json-name="name" data-json-sub="chapterList" data-json-value="id" data-first-title="所屬課程"> <option value="">請選擇</option> </select>
data-json-name:指定下拉時展示的數(shù)據(jù)字段,默認找“n”這個字段
? data-json-value:指定選中時取哪個字段作為值
? data-json-sub:如果返回的Json數(shù)據(jù)的子級下拉數(shù)據(jù)字段不完全同名,可以單獨為每一個下拉框指定子級list字段名
到此這篇關(guān)于基于 jquery-cxselect 實現(xiàn)下拉聯(lián)動效果的文章就介紹到這了,更多相關(guān)jquery-cxselect 下拉聯(lián)動內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JQuery實現(xiàn)倒計時按鈕的實現(xiàn)代碼
頁面中需要實現(xiàn)某個按鈕點擊完后,禁用它,并顯示倒計時。這個默認是3秒,代碼很簡單2012-03-03jQuery中text() val()和html()的區(qū)別實例詳解
這篇文章主要介紹了jQuery中text() val()和html()的區(qū)別實例詳解的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-06-06Easyui和zTree兩種方式分別實現(xiàn)樹形下拉框
最近工作中需要用到樹形下拉框,因為項目中樹形結(jié)構(gòu)使用的是zTree,效果不是很好看,于是想著使用easyui的comboTree,雖然效果達到了,但是風格和bootstrap不搭,下面把這兩種方式的效果分享到腳本之家平臺供大家參考2017-08-08