optgroupsã§selectã䜿çšããå Žåãã°ã«ãŒãã©ãã«ãã¯ãªãã¯ããããšãã«ãã°ã«ãŒãå
ã®ãã¹ãŠã®ã¢ã€ãã ãéžæã«è¿œå ããããšãéåžžã«äŸ¿å©ãªæ©èœã«ãªããŸãã ã°ã«ãŒããã1ã€ã®ã¢ã€ãã ãåŒãããã®ãéžæããã®ãéåžžã«ç°¡åã«ãªããŸãã
ããšãã°ãåœããŸãŒã³ããšã«ã°ã«ãŒãåãããã£ã«ã¿ãŒãã©ãŒã ããããŸãã ä»ã®ãšããã誰ããã°ã«ãŒããã1ã€ã®ã¢ã€ãã ãåŒãããã®ãéžæãããå Žåã¯ããã¹ãŠã®ã¢ã€ãã ã1ã€ãã€éžæããå¿
èŠããããŸãã ãã®æ©èœã䜿çšãããšã圌ã¯ã°ã«ãŒããã¯ãªãã¯ããã ãã§ãäžèŠãªåœãåé€ã§ããŸãã
ããã¯äŸ¿å©ã§ãããstandarthtml-selectã§ã¯èš±å¯ãããŠããŸããã
@ Fr3nzzy ïŒã¯ãããããããããªãã·ã§ã³ã§ããã°ãããã¯åé¡ã§ã¯ãªãã§ãããïŒ
@ Fr3nzzy ïŒå¯èœã§ããã°ãæšæºã®html-selectã§ãæ€çŽ¢ã§ããŸãã...ããã§ãéåžžã«äŸ¿å©ã§ãããã®ãããChosenã¯åªããŠããŸããæšæºã®selectãæ¹åãããŸãã ããã§ãåãçç±ãé©çšã§ãããšæããŸãã
@ greg0ire ïŒ+1ãç§ããããæ¢ããŠããŸãïŒoïŒ
@ pilap82ãã ããselectã¯ãååã®å ¥åã«ããã¢ã€ãã ã®æ€çŽ¢ããµããŒãããŠããŸãã
ãã£ããã ïŒïŒ
ããããé©çšããã®ã«æé©ãªå Žæã§ã¯ãªããããããŸããããããã圹ç«ã€ããšãé¡ã£ãŠããŸãã
$( '.chzn-results .group-result' ).each( function () {
var self = $( this )
, options = $( '~li', self )
, next = options.filter( '.group-result' ).get( 0 )
;
self.data( 'chzn-options', options.slice( 0, options.index( next ) ) );
} )
.click( function () {
$( this ).data( 'chzn-options' ).mouseup()
} )
.hover( function () {
$( this ).data( 'chzn-options' ).addClass( 'highlighted' );
}, function () {
$( this ).data( 'chzn-options' ).removeClass( 'highlighted' );
} )
.css( { cursor: 'pointer' } );
ããã¯çŽ æŽãããã¢ã€ãã¢ã§ãã ã³ã¢ããŒã ããããããŒãžããããã«ãªãŒãã³ã§ãããªãã°ãç§ã¯ãã«ãªã¯ãšã¹ããæåºããã€ããã§ãã @pfillerã¯ã©ãæããŸããïŒ
éžæãããããéžæã®ãµã³ãã«ïŒ
çŽ æŽãããïŒ
ãããChosenã«è¿œå ãããããšãæãã§ããŸãããã€ãã³ããªã¹ãã³ã°ã¯ããã»ã©éäžçã§ã¯ãªãæ¹æ³ã§è¿œå ããå¿ èŠããããŸãã @adriengibratã®ãœãªã¥ãŒã·ã§ã³ã¯ããªã¹ããŒãåã°ã«ãŒãã«é©çšããŸãããã°ã«ãŒããæ°çŸããå Žåã¯ããã©ãŒãã³ã¹ã
+1ã optgroupãéžæãããšãïŒãªãã·ã§ã³ã§ïŒãã¹ãŠã®åãç¡å¹å/é衚瀺ã«ãªããšèããŠããŸããã
ãã®æ©èœã®+1
@pfillerãããŸãã¯search_improvementsãã©ã³ãã®æŽæ°ã¯ãããŸããïŒ ããããã¹ã¿ãŒã«ããŒãžãããã®ãèŠããã§ãã
éžæå¯èœãªã°ã«ãŒããå¿ èŠã§ãã ç§ã¯ããšããšã³ãŒããå€æŽããããšããŸãããããoptgroupãã¹ããããããµãã¢ã€ãã ãã€ã³ãã³ãããããã«ã¹ããŒã¹ãè¿œå ããããšããããããåçã«è§ŠçºãããŸããã ããã¯ã²ã©ãããã«èŠããŸããããChosenã¯CSSã«ãã£ãŠé©åã«ã¹ã¿ã€ã«èšå®ãããŠããã®ã§ãéoptgroup selectã䜿çšããåãªãã·ã§ã³ã§ã¯ã©ã¹ã䜿çšããŠãã°ã«ãŒãåããã衚瀺ã®ããã«èŠããŠã¯ã©ãã§ããããã
ãã®ãã£ãã«ã§åºæ¬çãªããŒãžã§ã³ãèŠãããšãã§ããŸãïŒ http ïŒ
ç§ã¯ãã®ã¹ã¿ã€ã«ã«å€ãã®æéãè²»ãããŸããã§ããããããªãã¯ãã®èããç解ããã§ãããã ããã«ãããå¿ èŠãª2ã€ã®æ©èœãæäŸãããŸããéžæå¯èœãªãªããã°ã«ãŒããšæ€çŽ¢å¯èœãªãªããã°ã«ãŒãã§ãã ãã¹ãŠoptgroupsãªãã
ç§ã¯èªåã®ãããžã§ã¯ãã§ãã®ãã¯ããã¯ãé²ããããšããŠããŸããããã£ãŒãããã¯ãæ±ããŠããŸãã åäœããŠããããã§ãã ãã£ãšè¯ãæ¹æ³ãèããããŸããïŒ ãŸãã¯äœãèœãšãç©Žã¯ãããŸããïŒ
_ããããèšåããå¿ èŠãããããšã«æ°ã¥ããŸããããã£ãã«ã¯ããªãã·ã§ã³ã®è¿œå ãæå¹ã«ããããã«ãChosenã®Koenpuntãã©ãŒã¯ã䜿çšããŠããŸãã ããããããããã®äŸã«åœ±é¿ãäžãããšã¯æããŸããã_
_ç§ãã¬ã€ãã³ã¹ãæ¢ããŠããŸãã ãã®ææ³ã¯ãããããéžæãããå²åŠããããªãé¢ããŠããã select
æ©èœã«è¿ã¥ããŠããŸããããã®æ©èœã«é©åãªãªãã·ã§ã³ãããã°ãåãã§äœæ¥ãè¡ããŸãã_
ãã®æ©èœã®+1ãããããµããŒãããæ¹æ³ãæ¢ããŠãããšãã«éžã°ããããšãããããŸãã
ïŒç§ã¯ã°ã«ãŒãã¿ã€ãã«ãéžæããããã°ã«ãŒãã¢ã€ãã ãéžæã§ããããšãæ¢ããŠããŸããïŒäžèšã®ããã±ã°ãã®ããã«
ç·šéïŒæåŸã«ãç§ã¯ããã次ã®ããã«ãšãã¥ã¬ãŒãããŸããã
ã¯ã©ã¹ã«æ³šæããŠãã ãããã«ãŒãœã«ããã€ã³ã¿ã«èšå®ãã.clickableãcssã«è¿œå ããŸããã
<select name="category" data-placeholder="Choose a category..." class="chosen-select">
<option value="group-1 class="group-result clickable">Group Title</option>
<option value="1" class="group-option">Item Name</option>
<option value="2" class="group-option">Item Name</option>
</select>
ãããç§ã®è§£æ±ºçã§ãã ããã¯ç§ã®ããŒãºã«åºæã®ãã®ã§ãããç°¡åã«åŸ®èª¿æŽããŠèªåã®ããŒãºã«å€æŽããããšãã§ããŸãã
äŸïŒ
è»
-car1
-car2
-car3
é£è¡æ©
-plane1
-plane2
ç§ãããããšã¯ãæåã«ãã¹ãŠã®ã°ã«ãŒãããæ°ãããªãã·ã§ã³ãäœæããããšã§ããããããã°ãããã¹ãŠãã®ãªãã·ã§ã³ã¯ã°ã«ãŒãã®çŽåŸã«è¡šç€ºãããŸãã
è»
-ãã¹ãŠã®è»
-car1
-car2
-car3
人
-ãã¹ãŠã®äºº
-person1
-person2
'results_option_build'ã§ãããŒã¿ãã°ã«ãŒãã®å Žåã2çªç®ã®ãã©ã¡ãŒã¿ãŒãšã㊠'al'ãªãã·ã§ã³ã 'result_add_group'ã«æž¡ãã次ã®å埩㧠'All'ãªãã·ã§ã³ãã¹ãããããŸãã
ifïŒdata.groupïŒ{
ã³ã³ãã³ã+ = this.result_add_groupïŒdataã_ref [++ _ i]ïŒ
次ã«ããresult_add_groupãã«ç§»åããŠãæž¡ãããªãã·ã§ã³ã§ã°ã«ãŒãã眮ãæããŸãããã°ã«ãŒãã®ã¹ã¿ã€ã«ã¯ç¶æããŸãã
result_add_group = functionïŒgroupãoptionïŒ{
ã
ã
æ»ã "
ããã ãã§ããå¿ èŠã«å¿ããŠãã«ãŒãœã«ãcssã®ãã€ã³ã¿ã«å€æŽããŸãã
ãããã®ã©ããæ€çŽ¢æ©èœãèæ ®ã«å ¥ããŠããªãããã§ãã ããã©ã«ãã§éžæãããŠãããªãã·ã§ã³ãæ€çŽ¢ãããšãã°ã«ãŒãã©ãã«ã衚瀺ãããŸãã ãã®æ¹æ³ã§ã¯ãè€æ°ã®ã°ã«ãŒããããããããã«åããªãã·ã§ã³ãããå Žåã¯ãããã§ããŸãããã®ã§ãèŠèŠçã«åãã¢ã€ãã ã®ãªã¹ãã«ãªã£ãŠããŸããŸãã
è€æ°ã®éžæã®ç®¡çã容æã«ããã®ã§ãã©ã€ãã©ãªã®ãªãã·ã§ã³ãšããŠçµ±åããããšã¯éåžžã«èå³æ·±ãã§ãããã ããã€ãã®ããŒãžã§ã³ã§ã¹ã¯ã€ãŒãºã«ã€ããŠèšåããŸãããïŒ æšæ¶
ç§ã¯ãããjavascriptã䜿çšããŠå®è£ ããŸããããããã¯äžæçãªä¿®æ£ã§ãã è€æ°ã®éžæã«ã¯äœ¿çšããŸããããã«ã¹ã¿ã ã°ã«ãŒãåã«ã¯äœ¿çšããŸãã æçµçã«ã°ã«ãŒãããªãã·ã§ã³ã«ããŸããããã°ã«ãŒãã®ããã«èŠãããµããªãã·ã§ã³ãæ€çŽ¢ãããšãchoose.js httpïŒ// stackoverflowã§éåžžã®ããã«ã°ã«ãŒãã衚瀺ããããgroupsãããŒã¯ãŒããæå®ããŸãã
ããã¯ç§ã®ãããžã§ã¯ãã®èŠä»¶ã§ãã£ããããchooseã®ããŒã«ã«ã³ããŒã«è¿œå ããŸããã çµå±ãããã¯ããªãç°¡åã§ããã
set_default_values
é¢æ°ã§ã¯ãæåŸã«this.group_selectable = this.options.group_selectable != null ? this.options.group_selectable === true : false;
ã眮ããŸãã
次ã«ã result_add_group
ãã°ã«ãŒãã«å²ãåœãŠãããã¯ã©ã¹ã次ã®ããã«å€æŽããŸããã
if (this.group_selectable) {
group_el.className = "active-result group-result";
} else {
group_el.className = "group-result";
}
group_el.setAttribute("data-group-array-index", group.array_index);
æåŸã«ãªããŸãããã result_select
ã«å°ãããã¯ããŠãè¿œå ããŸãã
if (high[0].getAttribute("data-group-array-index")) {
var that = this;
high.nextUntil('.group-result').each(function(index, element) {
that.result_highlight = $(element);
that.result_select(evt);
});
}
çŽåitem = this.results_data[high[0].getAttribute("data-option-array-index")];
https://gist.github.com/ruhley/9944574ã§å®å šãªã³ãŒããåç §ããŠ
https://gist.github.com/ruhley/9944574#file -chosen-jquery-js-L1005
var itm = that.results_data[element.getAttribute("data-option-array-index")];
if(itm && !itm.selected){
that.result_highlight = $(element);
that.result_select(evt);
}
ããŒãã£ãŒã«å°ãé ããŸãããããã®æ©èœã¯+1ã§ãïŒ
ããªãã®è§£æ±ºçã®ããã®@ ruhley + 1ã¯ãé
åã®ããã«æ©èœããŸãïŒ
å®å
šãªã³ãŒãããŒãžã«ã¯ãããã³ãŒãã»ã°ã¡ã³ãã«ã¯ãªãå°ããªè©³çŽ°ïŒ
ããããªããš{
æåŸã«è¡æ¹äžæã
ããã
ã³ãŒããããããšã@ruhley ã
ãã ããå€æŽãå ãããšãã°ã«ãŒããã¯ãªãã¯ããŠãç¡å¹ã«ãªãããå床éžæã§ããŸãã
ãããç§ã®æ¹åç¹ã§ãïŒéžæãã1.4.2ã«åºã¥ãïŒïŒ
this.group_selectable = this.options.group_selectable != null ? this.options.group_selectable === true : false;
_ãã©ã¡ãŒã¿ã®è¿œå _
content += this.result_add_group(data, _ref.slice(_i+1, _i+data.children+1));
_åããresult_add_groupãé¢æ°ã«æž¡ããŸãã_
AbstractChosen.prototype.result_add_group = function(group, childrens) {
_åäŸãåãå ¥ããããã«_
group_el = document.createElement("li");
ïŒã®åŸã«ããresult_add_groupãé¢æ°ã§æ¬¡ãè¿œå ããŸããif (this.group_selectable) {
var all = true;
$.each(childrens, function(index, element) {
if(!element.selected){
all = false;
}
});
if(!all) {
classes.push("active-result");
} else {
classes.push("result-selected");
}
}
group_el.setAttribute("data-group-array-index", group.array_index);
_ããã«ãããå°ãªããšã1ã€ã®åãéžæãããŠããªãå Žåã«ãã°ã«ãŒããã¯ãªãã¯å¯èœã«ãªããŸãã ïŒãã®éšåã¯ãallãå€æ°ã®ããã«æ¹åå¯èœã§ãïŒã_
high.addClass("result-selected");
ïŒã®åŸã«ããresult_selectãé¢æ°ã§æ¬¡ãè¿œå ããŸããif (high[0].getAttribute("data-group-array-index")) {
var that = this;
high.nextUntil('.group-result').each(function(index, element) {
if($(element).hasClass('active-result')) {
that.result_highlight = $(element);
that.result_select(evt);
}
});
} else {
_ããã¯éžæãããŠããªãåã®ã¿ãè¿œå ããŸãã_
}
_ã¯ãªãã¯ããã°ã«ãŒãã®ç¶æ ãéããå¿ èŠããããŸãã_
ãã®ã³ãŒããæ£ããã€ã³ãã³ãããããšãå¿ããªãã§ãã ãã;ïŒ
ãããç§ã®ãã¡ã€ã«ã®ãã«ããŒãžã§ã³ã§ãïŒ https ïŒ
ããã«å·®åããããŸãïŒ1幎éå©çšå¯èœïŒïŒ https ïŒ
楜ãã
ããã¯ãŸã å®è£ ãããŠããŸãããïŒ
@GuillaumeSTEINãã«ããŒãžã§ã³ã®ã¹ã¯ãªãããè©ŠããŸããããäœãå€ãã£ãŠããªãããã§ãã
HTMLãæ©èœãããã«ã¯ãHTMLã«ç¹å¥ãªãã©ã¡ãŒã¿ãã¯ã©ã¹ãè¿œå ããå¿
èŠããããŸããïŒ
ãã¶ãã httpïŒ //codepen.io/ãŸãã¯jsfiddleã§å®çšçãªäŸãäœãããšãã§ããŸããïŒ
ã¯ãããã®æ©èœãæå¹ã«ããã«ã¯ããªãã·ã§ã³ïŒgroup_selectableãtrueã«èšå®ããå¿ èŠããããŸã
@GuillaumeSTEINã«æè¬ã@adriengibratã¹ã¯ãªããããéããããšã¯ãçŸåšã®ã°ã«ãŒãã®äžã®ãã¹ãŠã®ãªãã·ã§ã³ã匷調ããŠããŸãã
éžæãããã°ã«ãŒãã«ã¯ããçµæãéžæããããã¯ã©ã¹ããããŸãã
ããªãã¯ããã€ãã®CSSãè¡ãããšãã§ããŸãã ãããç§ãæžãããã®ã§ããããªãã¯ããªãã®ããŒãºã«ãããé©å¿ãããå¿
èŠããããããããŸããïŒ
select.form-control + .chosen-container-multi .chosen-results li.result-selected{
display: list-item;
color: #ccc;
cursor: default;
background-color: white;
}
åºããïŒ2678
ããã¯ãšãŠã䟿å©ãªæ©èœã§ãïŒ ç§ã¯ãããå®è£ ãããã®ãèŠããã§ãïŒ
ãã®æ©èœã®+1ã
誰ããããã圹ã«ç«ã€ãšæããªããç§ã¯@slothbear jsfiddleãã€ããã§ãããã次ã®ããã«æ¹åããŸãïŒ
è€æ°éžæã§çµæãéžæããåŸãçµæãéãããŸãŸã«ããããã«ãéžæãã1.8.3ã«ã¢ããã°ã¬ãŒãããŸããïŒããŒãžã§ã³1.7.0ã§è¿œå ïŒã çŽ æŽãããæ©èœãè¿œå ãããŠããã£ãã§ãã ãã ãã1.6.1ã䜿çšããŠããŠãããã®ã³ãŒãã䜿çšããŠãã°ã«ãŒãåãã¯ãªãã¯ãããšãã«ã°ã«ãŒãå šäœãè¿œå ã§ããããã«ããŸããïŒ http ïŒ
ãã®ã³ãŒãã¯ä»ãŸã§ããŸãæ©èœããŠããŸããã 1.8.3ãšhide_results_on_select ïŒfalseã䜿çšãããšãäœããå£ããçŸåšåŒ·èª¿è¡šç€ºãããŠããçµæãªãã·ã§ã³ã®ã¿ãéžæãããŸãã ãã®è¡ãåé€ããããšïŒããã©ã«ãã®trueã«æ»ããéžææã«é衚瀺ã«ãªããŸãïŒãæ£åžžã«æ©èœããã°ã«ãŒãå šäœã®çµæãªãã·ã§ã³ãéžæãããŸãã ãããã£ãŠãhide_results_on_ selectïŒfalseã®äœããã.group-resultã®äžã§.result-selectedã§ã¯ãªããã®ããã¹ãŠåéããæ©èœãå£ããã劚害ãããããŠããŸãã æ°æ©èœã®ããã«ãã®èœåãç ç²ã«ããããšã¯æ®é ·ã§ãã
äžèšã®ã³ã¡ã³ãããã¹ãŠèª¿ã¹ãŠããããæ°æ©èœã®æ¬ é¥ãšããŠå¯ŸåŠãããŠãããã©ããã確èªããŸãããããããã¹ãããŠãããšãã«äœ¿çšããŠããããŒãžã§ã³ãããããŸããã
äœãæ¡ã¯ïŒ
ããã£ãã ãããããã 1.8.3ãžã®ãã¢ããã°ã¬ãŒããã¯ãå é±ã®ã¢ã°ã©ãããã®ã²ãŒã ã«ä»ãªããŸããã§ããã cssã®åé¡ãäºæããªãã¢ã¯ãã£ããã£ã®åé¡ãªã©ãè€æ°éžææ©èœã§çµæãéãããŸãŸã«ããããã«ã¢ããã°ã¬ãŒãããŸãããïŒæåã«å®è£ ããã®ã«äœå¹ŽãããããŸããïŒãçµæããéžæãããšåžžã«ãããã«æ»ãããšãããããŸãããããã¯-äœãåŸ ã£ãŠããªãããšãã¹ãŠã§ãã å€ãã®ãªãã·ã§ã³ãåããåäžã®éžæã§ã®ããã©ãŒãã³ã¹ã¯ãã©ããããããã¯ããŒã«ã«é ããªããŸããã ããã«å€ãã®åé¡ãå€ãããŠããã«ãªã¹ãã§ããŸããã ãã®ããšãäœå¹Žãç¶ããŠè¯ãä»äºãããŠãç§ã¯ããã楜ããã§ããŸããã ããããæ¹åã¯ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãäœäžããããšããç ç²ãæã£ãŠãããããããã®ã§ãããç§ã«ã¯ãããã§ããŸããã éžæãããã®ãåŒãåºããŠselect2ã䜿çšããæ¹æ³ãç 究ããŠããŸãã 2018幎ã¯ããŠãŒã¶ãŒã®æåŸ ã«å¿ããæºããã®ããŸããŸãå°é£ã«ãªãéžæããŒã«ãèŠã€ãããšãã§ãã ãã¿ãŸãããããããšã
ç§ãselect2ã«ç§»åããŸãããããã以åã¯chooseã«ãã³ããåããŸããã§ããã ãããããšãããšããå¥åŠãªèšãæ¹ããããŸãã
ããã«ã¡ã¯ã
optgroupã䜿çšããŠã¯ãªãã¯ãããã®ã°ã«ãŒãã®ãã¹ãŠã®ãªãã·ã§ã³ãèªåçã«è¿œå ã§ããããã«ããå Žåã¯ããããjavascriptã«è¿œå ããã ãã§ã:(ã€ãã³ãããªã¬ãŒ ".group-result"ã¯ããå¶éçã«ãªãå¯èœæ§ããããŸãïŒ
AbstractChosen.prototype.optgroup_click = functionïŒevtïŒ...ã®ããã«ããããAbstractChosenã¯ã©ã¹ã«è¿œå ã§ãããšç¢ºä¿¡ããŠããŸãã
$('body').on('click','.group-result',function(){
// id of select
var quest=$(this).parent().parent().parent().attr('id');
quest='#'+quest.substring(0,quest.lastIndexOf('_'));
// number of optgroup
var total=$(quest+' optgroup').length;
// number of group after group-result clicked
var nb=0;
$(this).nextAll().each(function(){
if($(this).hasClass('group-result'))nb++;
});
// for clicked group-result, select options in the right select tag by position
$(quest+' optgroup:nth-of-type('+(total-nb)+')').children().each(function(){
$(this).prop('selected','selected');
});
// update chosen !
$(quest).trigger('chosen:updated');
});
ç§ã¯bootstrap-selectãå©çšããoptgroupãã¯ãªãã¯ããŠãã®ãã¹ãŠã®ã¢ã€ãã ãéžæã§ãããã®ãèŠã€ããã®ã«ãèŠåŽããŠããŸãã-ãã®ãªã³ã¯ã¯å®éã«ç§ã®ããã«æ©èœããŸãããããã圹ç«ã€ããšãé¡ã£ãŠããŸãïŒ https ïŒ
æãåèã«ãªãã³ã¡ã³ã
@ Fr3nzzy ïŒå¯èœã§ããã°ãæšæºã®html-selectã§ãæ€çŽ¢ã§ããŸãã...ããã§ãéåžžã«äŸ¿å©ã§ãããã®ãããChosenã¯åªããŠããŸããæšæºã®selectãæ¹åãããŸãã ããã§ãåãçç±ãé©çšã§ãããšæããŸãã
@ greg0ire ïŒ+1ãç§ããããæ¢ããŠããŸãïŒoïŒ