Chosen: optgroup ๋ ˆ์ด๋ธ”์„ ํด๋ฆญ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ

์— ๋งŒ๋“  2011๋…„ 10์›” 26์ผ  ยท  38์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: harvesthq/chosen

optgroup๊ณผ ํ•จ๊ป˜ ์„ ํƒ์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ทธ๋ฃน ๋ ˆ์ด๋ธ”์„ ํด๋ฆญํ•  ๋•Œ ๊ทธ๋ฃน์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์„ ํƒ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ํ•ญ๋ชฉ์„ ๋บ€ ๊ทธ๋ฃน์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ๋„ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ์˜์—ญ๋ณ„๋กœ ๊ทธ๋ฃนํ™”๋œ ๊ตญ๊ฐ€๊ฐ€ ์žˆ๋Š” ํ•„ํ„ฐ ์–‘์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” ํ•˜๋‚˜์˜ ํ•ญ๋ชฉ์„ ๋บ€ ๊ทธ๋ฃน์„ ์„ ํƒํ•˜๋ ค๋ฉด ๋ชจ๋“  ํ•ญ๋ชฉ์„ ํ•˜๋‚˜์”ฉ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋ฃน์„ ํด๋ฆญํ•˜๊ณ  ์›ํ•˜์ง€ ์•Š๋Š” ๊ตญ๊ฐ€๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Feature Request

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@Fr3nzzy : ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ‘œ์ค€ html-select๋„ ๊ฒ€์ƒ‰์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ... ๊ทธ๋Ÿฌ๋‚˜ ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ณ  ์ด๊ฒƒ์ด Chosen์ด ํ›Œ๋ฅญํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. ํ‘œ์ค€ ์„ ํƒ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋„ ๊ฐ™์€ ๋…ผ๋ฆฌ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@greg0ire : +1, ์ด๊ฒƒ๋„ ์ฐพ๊ณ  ์žˆ์–ด์š” :o)

๋ชจ๋“  38 ๋Œ“๊ธ€

์ด๊ฒƒ์€ ์œ ์šฉํ•˜์ง€๋งŒ ํ‘œ์ค€ html-select์—์„œ๋Š” ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@Fr3nzzy : ๋„ค, ํ•˜์ง€๋งŒ ์„ ํƒ์‚ฌํ•ญ์ด๋ผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋˜์ง€

@Fr3nzzy : ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ‘œ์ค€ html-select๋„ ๊ฒ€์ƒ‰์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ... ๊ทธ๋Ÿฌ๋‚˜ ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ณ  ์ด๊ฒƒ์ด Chosen์ด ํ›Œ๋ฅญํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. ํ‘œ์ค€ ์„ ํƒ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋„ ๊ฐ™์€ ๋…ผ๋ฆฌ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@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๋Š” ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”?

์„ ํƒํ•œ ๋ฐฐ์น˜ ์„ ํƒ ์ƒ˜ํ”Œ:

http://vafada.github.com/chosen-dojo/

์ž˜ ํ–ˆ์–ด์š”!

์ด๊ฒƒ์ด Chosen์— ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์ง€๋งŒ ์ด๋ฒคํŠธ ์ˆ˜์‹ ์€ ๋œ ์ง‘์ค‘์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. @adriengibrat ์˜ ์†”๋ฃจ์…˜์€ ์ˆ˜๋ฐฑ ๊ฐœ์˜ ๊ทธ๋ฃน์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ž˜ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋Š” ๊ฐ ๊ทธ๋ฃน์— ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜ ๊ทธ๋ฃน์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ div์— ์ด๋ฏธ ํด๋ฆญ ์ด๋ฒคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ต์…˜์ด ์„ค์ •๋˜๋ฉด CSS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ๊ฒฝ์ƒ‰์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

+1. ๋‚˜๋Š” optgroup์ด ์„ ํƒ๋˜๋ฉด (์„ ํƒ์ ์œผ๋กœ) ๋ชจ๋“  ์ž์‹์„ ๋น„ํ™œ์„ฑํ™”/์ˆจ๊ธธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด +1

@pfiller ์ด ๋˜๋Š” search_improvements ๋ถ„๊ธฐ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋งˆ์Šคํ„ฐ์— ๋ณ‘ํ•ฉ๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์„ ํƒ ๊ฐ€๋Šฅํ•œ ๊ทธ๋ฃน๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์›๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ํ›„ "optgroup์„ ๊ฑด๋„ˆ๋›ฐ๊ณ  ํ•˜์œ„ ํ•ญ๋ชฉ ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ์œ„ํ•œ ๊ณต๋ฐฑ ์ถ”๊ฐ€"์— ๋Œ€ํ•œ ์ž์ฃผ ์ œ์•ˆ๋œ ๋‹ต๋ณ€์—์„œ ์˜๊ฐ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋”์ฐํ•ด ๋ณด์ด์ง€๋งŒ Chosen์€ CSS์— ์˜ํ•ด ๋ฉ‹์ง€๊ฒŒ ์Šคํƒ€์ผ์ด ์ง€์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— optgroup์ด ์•„๋‹Œ ์„ ํƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐ ์˜ต์…˜์— ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ฃนํ™”๋œ ๋””์Šคํ”Œ๋ ˆ์ด์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์ด ๋ฐ”์ด์˜ฌ๋ฆฐ์—์„œ ๊ธฐ๋ณธ ๋ฒ„์ „์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. http://jsfiddle.net/slothbear/9xqpF/

๋‚˜๋Š” ์Šคํƒ€์ผ์— ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๋‹น์‹ ์€ ์•„์ด๋””์–ด๋ฅผ ์–ป์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ธ ์„ ํƒ ๊ฐ€๋Šฅํ•œ optgroup๊ณผ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅํ•œ optgroup์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ optgroup์ด ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ ์ด ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๊ณ  ์žˆ์ง€๋งŒ ํ”ผ๋“œ๋ฐฑ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ด ์ƒ๊ฐ๋‚˜๋‚˜์š”? ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

_์•„๋งˆ๋„ ์–ธ๊ธ‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๋ฐ”์ด์˜ฌ๋ฆฐ์€ ์˜ต์…˜ ์ถ”๊ฐ€๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด Chosen์˜ Koenpunt ํฌํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ด ์˜ˆ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค._

_์ €๋„ ์•ˆ๋‚ด๋ฅผ ๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ๊ธฐ์ˆ ์ด select ๊ธฐ๋Šฅ์— ๊ทผ์ ‘ํ•˜๊ธฐ ์œ„ํ•ด ์„ ํƒ๋œ ์ฒ ํ•™์˜ ๊ฝค ๋จผ ๋ถ„์•ผ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ต์…˜์ด ์ด ๊ธฐ๋Šฅ์— ์ ํ•ฉํ•˜๋‹ค๋ฉด ๊ธฐ๊บผ์ด ์ž‘์—…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค._

์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด +1, ์ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋‹ค๊ฐ€ ์„ ํƒํ•œ ๊ฒƒ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

(๋‚˜๋Š” ๊ทธ๋ฃน ์ œ๋ชฉ์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ฃน ํ•ญ๋ชฉ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค) ์œ„์˜ Slothbear์— ๋”ฐ๋ผ

ํŽธ์ง‘ : ๊ฒฐ๊ตญ ๋‚˜๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ด๊ฒƒ์„ ์—๋ฎฌ๋ ˆ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
ํด๋ž˜์Šค์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ์ปค์„œ๋ฅผ ํฌ์ธํ„ฐ๋กœ ์„ค์ •ํ•˜๋Š” CSS์— .clickable๋„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

<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>

์—ฌ๊ธฐ ๋‚ด ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ์‰ฝ๊ฒŒ ์กฐ์ •ํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ:
์ž๋™์ฐจ
-์ฐจ1
-์ฐจ2
-์ฐจ3
๋น„ํ–‰๊ธฐ
-ํ‰๋ฉด1
-ํ‰๋ฉด2

๋‚ด๊ฐ€ ํ•œ ๊ฒƒ์€ ๋ชจ๋“  ๊ทธ๋ฃน์—์„œ ์ฒ˜์Œ์— ์ƒˆ ์˜ต์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด '์ „์ฒด' ์˜ต์…˜์ด ๊ทธ๋ฃน ๋ฐ”๋กœ ๋’ค์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
์ž๋™์ฐจ
- ๋ชจ๋“  ์ž๋™์ฐจ
-์ฐจ1
-์ฐจ2
-์ฐจ3
์‚ฌ๋žŒ๋“ค
-๋ชจ๋“  ์‚ฌ๋žŒ๋“ค
-์‚ฌ๋žŒ1
-์‚ฌ๋žŒ2

'results_option_build' ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ๋ฃน์ผ ๋•Œ 'All' ์˜ต์…˜์„ 'result_add_group'์— ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•˜๊ณ  ๋‹ค์Œ ๋ฐ˜๋ณต์—์„œ 'All' ์˜ต์…˜์„ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.

if (data.group) {
๋‚ด์šฉ += this.result_add_group(๋ฐ์ดํ„ฐ, _ref[++_i])

์ด์ œ 'result_add_group'์œผ๋กœ ์ด๋™ํ•˜์—ฌ ๊ทธ๋ฃน์„ ์šฐ๋ฆฌ๊ฐ€ ์ „๋‹ฌํ•œ ์˜ต์…˜์œผ๋กœ ๊ต์ฒดํ•˜๋˜ ๊ทธ๋ฃน ์Šคํƒ€์ผ์€ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
result_add_group = ๊ธฐ๋Šฅ(๊ทธ๋ฃน, ์˜ต์…˜) {
.
.
๋ฐ˜ํ’ˆ "

  • " + group.search_text + "
  • ";

    ๊ทธ๊ฒŒ ๋‹ค์•ผ.. ์›ํ•˜๋Š” ๊ฒฝ์šฐ CSS์—์„œ ์ปค์„œ๋ฅผ ํฌ์ธํ„ฐ๋กœ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.

    ์ด๋“ค ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ ํƒ๋จ์—์„œ ์˜ต์…˜์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๊ทธ๋ฃน ๋ ˆ์ด๋ธ”๋„ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ทธ๋ฃน์ด ์žˆ๊ณ  ๋™์ผํ•œ ์˜ต์…˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‹œ๊ฐ์ ์œผ๋กœ ๋™์ผํ•œ ํ•ญ๋ชฉ ๋ชฉ๋ก์œผ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค.

    ๋‹ค์ค‘ ์„ ํƒ์˜ ๊ด€๋ฆฌ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋ฏ€๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์˜ต์…˜์œผ๋กœ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฒ„์ „์—์„œ ์••์ฐฉ์„ ์–ธ๊ธ‰ ํ–ˆ์Šต๋‹ˆ๊นŒ? ์ธ์‚ฌ

    ์ž„์‹œ ์ˆ˜์ • ์‚ฌํ•ญ์ธ javascript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์ค‘ ์„ ํƒ์—๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ์‚ฌ์šฉ์ž ์ง€์ • ๊ทธ๋ฃนํ™”์—๋Š” ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋ฃน์„ ์˜ต์…˜์ด์ง€๋งŒ ๊ทธ๋ฃน์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋งŒ๋“ค๊ณ  ํ•˜์œ„ ์˜ต์…˜์„ ๊ฒ€์ƒ‰ํ•  ๋•Œ ๊ทธ๋ฃน์ด selected.js http://stackoverflow ์—์„œ ์ •์ƒ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ '๊ทธ๋ฃน' ํ‚ค์›Œ๋“œ๋ฅผ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค

    ๋‚ด ํ”„๋กœ์ ํŠธ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ์„ ํƒํ•œ ๋กœ์ปฌ ์‚ฌ๋ณธ์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๊ฝค ์‰ฌ์› ์Šต๋‹ˆ๋‹ค.

    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 ๊ธฐ์ค€).

    • 158ํ–‰ ๋’ค์— "set_default_values" ํ•จ์ˆ˜์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    this.group_selectable = this.options.group_selectable != null ? this.options.group_selectable === true : false;
    

    _๋งค๊ฐœ๋ณ€์ˆ˜ ์ถ”๊ฐ€_

    • "results_option_build" ํ•จ์ˆ˜์—์„œ 222ํ–‰์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
    content += this.result_add_group(data, _ref.slice(_i+1, _i+data.children+1));
    

    _์•„์ด๋“ค์—๊ฒŒ "result_add_group" ๊ธฐ๋Šฅ์„ ๋ถ€์—ฌํ•˜์„ธ์š”._

    • ๋ผ์ธ 272, "result_add_group" ํ•จ์ˆ˜ ์žฌ์ •์˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
    AbstractChosen.prototype.result_add_group = function(group, childrens) {
    

    _์•„์ด๋“ค์„ ๋ฐ›๊ธฐ ์œ„ํ•ด_

    • 285ํ–‰( 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);
    

    _์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ์ž์‹์ด ์„ ํƒ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ทธ๋ฃน์„ ํด๋ฆญํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. (์ด ๋ถ€๋ถ„์€ "all" ๋ณ€์ˆ˜๋กœ ์ธํ•ด ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)._

    • 1052ํ–‰( 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 {
    

    _์„ ํƒํ•˜์ง€ ์•Š์€ ํ•˜์œ„ ํ•ญ๋ชฉ๋งŒ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค._

    • 1083ํ–‰ ์ดํ›„ "result_select" ํ•จ์ˆ˜์—์„œ:
    }
    

    _ํด๋ฆญํ•œ ๊ทธ๋ฃน์˜ ์กฐ๊ฑด์„ ๋‹ซ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค._

    ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋“ค์—ฌ์“ฐ๊ธฐํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค ;)

    ๋‹ค์Œ์€ ๋‚ด ํŒŒ์ผ์˜ ์ „์ฒด ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. https://gist.github.com/GuillaumeSTEIN/7a4ece3c6bb487d16df0
    ๋‹ค์Œ์€ ์ฐจ์ด์ ์ž…๋‹ˆ๋‹ค(1๋…„ ๊ฐ€๋Šฅ): https://www.diffnow.com/?report=8zhe9
    ์ฆ๊ฑฐ์šด ์‹œ๊ฐ„ ๋ณด๋‚ด์„ธ์š”

    ์ด๊ฑฐ ์•„์ง ๊ตฌํ˜„ ์•ˆ๋œ๊ฑด๊ฐ€์š”?

    @GuillaumeSTEIN ์ •์‹ ๋ฒ„์ „ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์•„๋ฌด ๊ฒƒ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    ์ž‘๋™ํ•˜๋ ค๋ฉด 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์„ ์žก๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

    • "๋ชจ๋‘ ์ง€์šฐ๊ธฐ" ๋ฒ„ํŠผ
    • ๋ฃจํŠธ ์นดํ…Œ๊ณ ๋ฆฌ ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๋ฉด ํ•˜์œ„ ํ•ญ๋ชฉ์ด ๋น„ํ™œ์„ฑํ™” ๋ฐ ์„ ํƒ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค. ์™œ์š” ? ์ œ ๊ฒฝ์šฐ์—๋Š” selected๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์ธต ํ•„ํ„ฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์•„๋ฒ„์ง€ ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๋ฉด ๋ชจ๋“  ํ•˜์œ„ ๋ฒ”์ฃผ์—์„œ ๊ฒ€์ƒ‰์ด ์ˆ˜ํ–‰๋˜๋ฉฐ ๋ชจ๋“  ํ•˜์œ„ ํ•ญ๋ชฉ์„ ์„ ํƒํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” UI๋ฅผ ์˜ค์—ผ์‹œํ‚ค๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    http://jsfiddle.net/Zardoz/pf6dhrbc/6/

    ๋‹ค์ค‘ ์„ ํƒ(๋ฒ„์ „ 1.7.0์— ์ถ”๊ฐ€๋จ)์—์„œ ๊ฒฐ๊ณผ๋ฅผ ์„ ํƒํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ์—ด๋ฆฐ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฉ๊ธˆ ์„ ํƒํ•œ 1.8.3์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 1.6.1์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๊ณ  ๊ทธ๋ฃน ์ด๋ฆ„์„ ํด๋ฆญํ•  ๋•Œ ์ „์ฒด ๊ทธ๋ฃน์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฌ๊ธฐ์—์„œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. http://robido.com/jquery/add-selectdeselect-optgroup-click-events-harvests- selected-jquery-plugin/

    ๊ทธ ์ฝ”๋“œ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. 1.8.3 ๋ฐ hide_results_on_ select:false๋ฅผ ์‚ฌ์šฉ ํ•˜๋ฉด ๋ฌด์–ธ๊ฐ€๊ฐ€ ์ค‘๋‹จ๋˜๊ณ  ํ˜„์žฌ ๊ฐ•์กฐ ํ‘œ์‹œ๋œ ๊ฒฐ๊ณผ ์˜ต์…˜๋งŒ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์ค„์ด ์ œ๊ฑฐ๋˜๋ฉด(๊ธฐ๋ณธ๊ฐ’์ธ true๋กœ ๋‹ค์‹œ ์„ค์ •ํ•˜๊ณ  ์„ ํƒ ์‹œ ์ˆจ๊ธฐ๊ธฐ) ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ์ „์ฒด ๊ทธ๋ฃน ๊ฒฐ๊ณผ ์˜ต์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ hide_results_on_ select:false ์˜ ๋ฌด์–ธ๊ฐ€๊ฐ€ .group-result ์•„๋ž˜์— .result-selected๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์ˆ˜์ง‘ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ค‘๋‹จ/๋ฐฉํ•ดํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ์ด ๋Šฅ๋ ฅ์„ ํฌ์ƒํ•˜๋Š” ๊ฒƒ์€ ์ž”์ธํ•ฉ๋‹ˆ๋‹ค.

    ์œ„์˜ ๋ชจ๋“  ์˜๊ฒฌ์„ ๊ฒ€ํ† ํ•˜์—ฌ ์ด๊ฒƒ์ด ์ƒˆ ๊ธฐ๋Šฅ์˜ ๊ฒฐํ•จ์œผ๋กœ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์ด ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์–ด๋–ค ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    ์–ด๋–ค ์•„์ด๋””์–ด?

    ๊ดœ์ฐฎ์•„. ๋‚˜๋Š” ์ถฉ๋ถ„ํžˆ ํ–ˆ๋‹ค. 1.8.3์œผ๋กœ "์—…๊ทธ๋ ˆ์ด๋“œ"ํ•˜๋Š” ๊ฒƒ์€ ์ง€๋‚œ ์ฃผ ๋™์•ˆ ๋‘๋”์ง€๋ฅผ ๋‘๋“ค๊ฒจ ํŒจ๋Š” ๊ฒŒ์ž„์— ๋ถˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค. CSS ๋ฌธ์ œ, ์˜ˆ๊ธฐ์น˜ ์•Š์€ ํ™œ๋™ ๋ฌธ์ œ ๋“ฑ ๋‹ค์ค‘ ์„ ํƒ ๊ธฐ๋Šฅ(์ฒ˜์Œ์—๋Š” ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋ช‡ ๋…„์ด ๊ฑธ๋ ธ์Œ)์—์„œ ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์† ์—ด์–ด ๋‘๋„๋ก ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์ง€๋งŒ ๊ฒฐ๊ณผ์—์„œ ์„ ํƒํ•  ๋•Œ ํ•ญ์ƒ ๋งจ ์œ„๋กœ ์ ํ”„ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ - ์•„๋ฌด๊ฒƒ๋„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š” ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์˜ต์…˜์ด ์žˆ๋Š” ๋‹จ์ผ ์„ ํƒ์˜ ์„ฑ๋Šฅ์ด ์–ด๋–ป๊ฒŒ๋“  ํฌ๋กค๋ง ์†๋„๊ฐ€ ๋Š๋ ค์กŒ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋‚˜์—ดํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋…„ ๋™์•ˆ ์ด ์ผ์„ ์ž˜ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๊ทธ๊ฒƒ์„ ์ฆ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐœ์„  ์‚ฌํ•ญ์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ €ํ•˜์‹œํ‚ค๋Š” ๋น„์šฉ์œผ๋กœ ์ด๋ฃจ์–ด์กŒ์œผ๋ฉฐ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. selected๋ฅผ ๋ฝ‘์•„๋‚ด๊ณ  select2๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์—ฐ๊ตฌ ์ค‘์ž…๋‹ˆ๋‹ค. 2018๋…„, ์ ์  ๋” ์ถฉ์กฑํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง€๋Š” ์‚ฌ์šฉ์ž ๊ธฐ๋Œ€์— ๋ถ€์‘ํ•˜๋Š” ์„ ํƒ ๋„๊ตฌ๋ฅผ ์ฐพ์•„์•ผ ํ•  ๋•Œ์ž…๋‹ˆ๋‹ค. ์ฃ„์†กํ•˜๊ณ  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

    ๋‚˜๋„ select2๋กœ ์˜ฎ๊ฒผ์ง€๋งŒ ๊ทธ ์ „์—๋Š” selected์— ๋Œ€ํ•ด ๋คํ”„๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ "๊ณ ๋งˆ์›Œ"๋ผ๊ณ  ๋งํ•˜๋Š” ์ด์ƒํ•œ ๋ฐฉ๋ฒ•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    ์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ,
    optgroup์„ ์‚ฌ์šฉํ•˜๊ณ  ์ด๋ฅผ ํด๋ฆญํ•˜๊ณ  ํ•ด๋‹น ๊ทธ๋ฃน์˜ ๋ชจ๋“  ์˜ต์…˜์„ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. (์ด๋ฒคํŠธ ํŠธ๋ฆฌ๊ฑฐ ".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์„ ํด๋ฆญํ•˜๊ณ  ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ณ ๊ตฐ๋ถ„ํˆฌํ–ˆ์Šต๋‹ˆ๋‹ค. - ์ด ๋งํฌ๋Š” ์‹ค์ œ๋กœ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋„์›€์ด ๋˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. /select-deselect-optgroup-based-on-option-select-in-select-picker-boostrap

    ์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
    0 / 5 - 0 ๋“ฑ๊ธ‰