jquery chosen插件使用及select常用方法


 

1、chosen插件使用

chosen插件依賴於jQuery庫或prototype,使用之前要先引入jQuery或prototype。

引入jquery插件和chosen插件,對需要美化的下拉框執行chosen函數:$(selector).chosen(options)。可以把selector寫成樣式類,這樣執行完chosen函數后,只要加上樣式類就可以了。

舉例

<head> <meta charset="utf-8"> <link href='https://cdn.bootcss.com/chosen/1.5.1/chosen.min.css' rel='stylesheet'/> <style> .w-country{width:100px;} </style> <script src='https://code.jquery.com/jquery-1.9.0.js'></script> <script src='https://cdn.bootcss.com/chosen/1.5.1/chosen.jquery.js'></script> <script> $(function(){ $('.chosen').chosen({ no_results_text: "沒有找到結果!",//搜索無結果時顯示的提示 search_contains:true, //關鍵字模糊搜索。設置為true,只要選項包含搜索詞就會顯示;設置為false,則要求從選項開頭開始匹配 allow_single_deselect:true, //單選下拉框是否允許取消選擇。如果允許,選中選項會有一個x號可以刪除選項 disable_search: false, //禁用搜索。設置為true,則無法搜索選項。 disable_search_threshold: 0, //當選項少等於於指定個數時禁用搜索。 inherit_select_classes: true, //是否繼承原下拉框的樣式類,此處設為繼承 placeholder_text_single: '選擇國家', //單選選擇框的默認提示信息,當選項為空時會顯示。如果原下拉框設置了data-placeholder,會覆蓋這里的值。 width: '400px', //設置chosen下拉框的寬度。即使原下拉框本身設置了寬度,也會被width覆蓋。 max_shown_results: 1000, //下拉框最大顯示選項數量 display_disabled_options: false, single_backstroke_delete: false, //false表示按兩次刪除鍵才能刪除選項,true表示按一次刪除鍵即可刪除 case_sensitive_search: false, //搜索大小寫敏感。此處設為不敏感 group_search: false, //選項組是否可搜。此處搜索不可搜 include_group_label_in_selected: true //選中選項是否顯示選項分組。false不顯示,true顯示。默認false。 }); $('.chosen2').chosen({ search_contains:false, enable_split_word_search: true //分詞搜索,選項詞可通過空格或'[]'分隔。search_contains為false時才能看出效果 }); }); </script> </head> <body> <select class='chosen w-country' data-placeholder='請選擇國家' multiple > <option value=""></option> <option value="China">中國</option> <option value="US">US</option> <option value="England">英國</option> <option value="Canada">加拿大</option> <option value="Cube">古巴</option> </select> <br/><br/> <select class='chosen'> <optgroup label="Swedish Cars"> <option value ="volvo">Volvo</option> <option value ="saab">Saab</option> </optgroup> <optgroup label="German Cars"> <option value ="mercedes">Mercedes</option> <option value ="audi">Audi</option> </optgroup> </select> <br/><br/> <select class='chosen2' > <option value=""></option> <option value="vegetable">西紅柿 黃瓜 芹菜</option> <option value="fruit">葡萄 草莓 芭樂[潘石榴]</option> </select> </body> 

屬性:

選項 描述
data-placeholder 占位符文字。注意: 該屬性會覆蓋 placeholder_text_multiple 或 placeholder_text_single 選項。
multiple 有此屬性的 select 會渲染成可以多選的 Chosen 選框
selected, disabled 設置選中、禁止狀態,Chosen 會讀取這些屬性
<select class='chosen w-country' data-placeholder='請選擇國家' multiple > <option value=""></option> <option value="China" selected>中國 <option value="Canada" disabled>加拿大</option> </select>

監聽事件:

選項 描述
change Chosen 觸發標准的 change 事件,同時會傳遞 selected or deselected 參數, 方便用戶獲取改變的選項
chosen:ready Chosen 實例化完成時觸發
chosen:maxselected 超過 max_selected_options 設置時觸發
chosen:showing_dropdown Chosen 下拉選框打開完成時觸發
chosen:hiding_dropdown Chosen 下拉選框關閉完成時觸發
chosen:no_results 搜索沒有匹配項時觸發
$('.chosen').on('change', function(e, params) { do_something(e, params); }); 

Chosen 觸發的事件:

事件 描述
chosen:updated 通過 JS 改變 select 元素選項時應該觸發此事件,以更新 Chosen 生成的選框
chosen:activate 相當於 HTML focus 事件
chosen:open 激活 Chosen 並顯示搜索結果
chosen:close 關閉 Chosen 並隱藏搜索結果
$('.chosen').trigger('chosen:updated'); //我在項目中用的是 $('.chosen').trigger('liszt:updated'); 

常用操作:
1.1、設置chosen下拉框中的選項內容

/*設置下拉框選項內容*/ $(selectId).html(change_options); //需要執行trigger方法,才會生效 $(selectId).trigger("liszt:updated"); 

1.2、設置chosen選中某項

//設置選中第幾項 $(selectId).get(0).selectedIndex=i; //需要執行trigger方法,才會生效 $(selectId).trigger("liszt:updated"); //需要執行change()方法,才會觸發onChange事件 $(selectId).change(); 

2、select使用操作

2.1、設置select內容

清空select:
$("#ddlregtype").empty();
設置select選項
$("#ddlregtype").html();

2.2、獲取select相關內容

獲取select選中的 value:
$("#ddlregtype").val();
獲取select 選中的 text :
$("#ddlregtype").find("option:selected").text();
獲取select選中的索引:
$("#ddlregtype").get(0).selectedIndex;

2.3、設置select選中某一項

<div id="div1"> <select id="select1"> <option value="1">律師</option> <option value="2">監護人</option> <option value="3">親友</option> <option value="4">其他</option> </select> </div> 

根據value值

//根據value值 $("#select1 option[value='4']").attr("selected","selected"); $("#select1 option[value='4']").attr("selected",true); $("#select1").val("4"); $("#select1").get(0).value = '3'; 

根據索引值

//根據索引值 $("#select1 ").get(0).selectedIndex=index;//index為索引值(從0開始) $("#select1").get(0).options[i].selected = true; //i為索引值(從0開始) 

根據text值

//根據text值 $('#test option[text="b"]').attr("selected",true); $('#test').find('option[text="b"]').attr("selected",true); 

但是以上兩種方法在jquery低於1.4.2的版本(含)中有效,在更高版本中無效!

【高版本Jquery中解決辦法:】
解決一:精確匹配,選擇文本與所給字符串完全一樣的option。

$('#select1 option').filter(function(){return $(this).text()=="親友";}).attr("selected",true); 

解決二:子串匹配,選擇文本包含所給字符串的option。

$("#select1 option:contains('其他')").attr('selected', true); 

解決三:自定義函數

$("#btn").click(function(){ var count=$("#select1").get(0).options.length; for(var i=0;i<count;i++){ if($("#select1").get(0).options[i].text == "親友") { $("#select1").get(0).options[i].selected = true; break; } } }); 

2.4、操作select option選項

$("#select_id").append("<option value='value'>text</option>"); //添加一項option $("#select_id").prepend("<option value='0'>請選擇</option>"); //在前面插入一項option $("#select_id option:last").remove(); //刪除索引值最大的option $("#select_id option[index='0']").remove();//刪除索引值為0的option $("#select_id option[value='3']").remove(); //刪除值為3的option $("#select_id option[text='4']").remove(); //刪除text值為4的option


作者:JuanitaLee
鏈接: https://www.jianshu.com/p/51863ae82723
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM