0
0

index.html 388 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Bootstrap Multiselect</title>
  5. <meta name="robots" content="noindex, nofollow" />
  6. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  7. <link rel="stylesheet" href="docs/css/bootstrap-3.3.2.min.css" type="text/css">
  8. <link rel="stylesheet" href="docs/css/bootstrap-example.min.css" type="text/css">
  9. <link rel="stylesheet" href="docs/css/prettify.min.css" type="text/css">
  10. <script type="text/javascript" src="docs/js/jquery-2.1.3.min.js"></script>
  11. <script type="text/javascript" src="docs/js/bootstrap-3.3.2.min.js"></script>
  12. <script type="text/javascript" src="docs/js/prettify.min.js"></script>
  13. <link rel="stylesheet" href="dist/css/bootstrap-multiselect.css" type="text/css">
  14. <script type="text/javascript" src="dist/js/bootstrap-multiselect.js"></script>
  15. <script type="text/javascript">
  16. $(document).ready(function() {
  17. window.prettyPrint() && prettyPrint();
  18. });
  19. </script>
  20. </head>
  21. <body data-spy="scroll" data-target="#affix">
  22. <a href="https://github.com/davidstutz/bootstrap-multiselect"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub"></a>
  23. <div class="container">
  24. <div class="row">
  25. <div class="col-md-3" id="affix">
  26. <ul class="nav nav-pills nav-stacked sidebar" data-spy="affix" style="margin-top: 40px;">
  27. <li class="active"><a href="#getting-started">Getting Started</a></li>
  28. <li><a href="#configuration-options">Configuration Options</a></li>
  29. <li><a href="#templates">Templates</a></li>
  30. <li><a href="#styling">Styling</a></li>
  31. <li><a href="#methods">Methods</a></li>
  32. <li><a href="#further-examples">Further Examples</a></li>
  33. <li><a href="#post">Server-Side Processing</a></li>
  34. <li><a href="#keyboard-support">Keyboard Support</a>
  35. <li><a href="require.html">Require JS</a>
  36. <li><a href="#faq">Frequently Asked Questions</a></li>
  37. <li><a href="#known-issues">Known Issues</a></li>
  38. <li><a href="tests/SpecRunner.html">Tests</a></li>
  39. <li><a href="#license">License</a></li>
  40. </ul>
  41. </div>
  42. <div class="col-md-9">
  43. <div class="page-header">
  44. <h1>Bootstrap Multiselect <img src="https://travis-ci.org/davidstutz/bootstrap-multiselect.svg?branch=master" alt="Build Status" /></h1>
  45. </div>
  46. <p class="alert alert-info">
  47. Please consult the <a href="#faq">FAQ</a>, the <a href="https://github.com/davidstutz/bootstrap-multiselect/issues">Issue Tracker</a> or <a href="http://stackoverflow.com/questions/tagged/bootstrap-multiselect">StackOverflow</a> before creating a new issue; when creating an issue or a pull request, read <a href="#how-to-contribute">how to contribute</a> first.
  48. </p>
  49. <div class="well well-sm">
  50. <p><b>Consider making a donation to support the development of this plugin:</b></p>
  51. <div class="text-center">
  52. <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
  53. <input type="hidden" name="cmd" value="_s-xclick">
  54. <input type="hidden" name="hosted_button_id" value="V95Q7QK6JY32Q">
  55. <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
  56. <img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
  57. </form>
  58. </div>
  59. <a href="http://davidstutz.de/donate/" class="small pull-right">Why Donate?</a>
  60. <div class="clearfix"></div>
  61. </div>
  62. <div class="page-header">
  63. <h2 id="getting-started">Getting Started</h2>
  64. </div>
  65. <ol>
  66. <li>
  67. <h3>Link the Required Files</h3>
  68. <p>
  69. First, the <a href="http://jquery.com/" target="_blank">jQuery</a> library needs to be included. Then <a href="http://getbootstrap.com" target="_blank">Twitter Bootstrap</a> - both the Javascript library and the CSS stylesheet - needs to be included.
  70. </p>
  71. <pre class="prettyprint linenums">
  72. &lt;!-- Include Twitter Bootstrap and jQuery: --&gt;
  73. &lt;link rel=&quot;stylesheet&quot; href=&quot;css/bootstrap.min.css&quot; type=&quot;text/css&quot;/&gt;
  74. &lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.min.js&quot;&gt;&lt;/script&gt;
  75. &lt;script type=&quot;text/javascript&quot; src=&quot;js/bootstrap.min.js&quot;&gt;&lt;/script&gt;
  76. &lt;!-- Include the plugin's CSS and JS: --&gt;
  77. &lt;script type=&quot;text/javascript&quot; src=&quot;js/bootstrap-multiselect.js&quot;&gt;&lt;/script&gt;
  78. &lt;link rel=&quot;stylesheet&quot; href=&quot;css/bootstrap-multiselect.css&quot; type=&quot;text/css&quot;/&gt;
  79. </pre>
  80. <p>
  81. The jQuery library can also be included using a CDN, for example the <a href="https://developers.google.com/speed/libraries/devguide?hl=de&csw=1#jquery">Google CDN</a>:
  82. </p>
  83. <pre class="prettyprint linenums">
  84. &lt;script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"&gt;&lt;/script&gt;
  85. </pre>
  86. <p class="alert alert-info">
  87. Note that the plugin will work both with version 2.x of the jQuery library as well as with version 1.10.x of the jQuery library. So for using the Google CDN you may have to adjust the version.
  88. </p>
  89. </li>
  90. <li>
  91. <h3>Create a Select</h3>
  92. <p>
  93. Now simply use HTML to create your <code>select</code> input which you want to turn into a multiselect. Remember to set the <code>multiple</code> attribute as to get a real multiselect - but do not worry, the plugin can also be used as usual select without the <code>multiple</code> attribute being present.
  94. </p>
  95. <pre class="prettyprint linenums">
  96. &lt;!-- Build your select: --&gt;
  97. &lt;select id=&quot;example-getting-started&quot; multiple=&quot;multiple&quot;&gt;
  98. &lt;option value=&quot;cheese&quot;&gt;Cheese&lt;/option&gt;
  99. &lt;option value=&quot;tomatoes&quot;&gt;Tomatoes&lt;/option&gt;
  100. &lt;option value=&quot;mozarella&quot;&gt;Mozzarella&lt;/option&gt;
  101. &lt;option value=&quot;mushrooms&quot;&gt;Mushrooms&lt;/option&gt;
  102. &lt;option value=&quot;pepperoni&quot;&gt;Pepperoni&lt;/option&gt;
  103. &lt;option value=&quot;onions&quot;&gt;Onions&lt;/option&gt;
  104. &lt;/select&gt;
  105. </pre>
  106. </li>
  107. <li>
  108. <h3>Call the Plugin</h3>
  109. <p>
  110. In the end, simply call the plugin on your <code>select</code>. You may also specify further options, see the Options tab for further information.
  111. </p>
  112. <div class="example">
  113. <script type="text/javascript">
  114. $(document).ready(function() {
  115. $('#example-getting-started').multiselect();
  116. });
  117. </script>
  118. <select id="example-getting-started" multiple="multiple">
  119. <option value="cheese">Cheese</option>
  120. <option value="tomatoes">Tomatoes</option>
  121. <option value="Mozzarella">Mozzarella</option>
  122. <option value="Mushrooms">Mushrooms</option>
  123. <option value="Pepperoni">Pepperoni</option>
  124. <option value="Onions">Onions</option>
  125. </select>
  126. </div>
  127. <div class="highlight">
  128. <pre class="prettyprint linenums">
  129. &lt;!-- Initialize the plugin: --&gt;
  130. &lt;script type=&quot;text/javascript&quot;&gt;
  131. $(document).ready(function() {
  132. $(&#39;#example-getting-started&#39;).multiselect();
  133. });
  134. &lt;/script&gt;
  135. </pre>
  136. </div>
  137. </li>
  138. </ol>
  139. <div class="page-header">
  140. <h2 id="configuration-options">Configuration Options</h2>
  141. </div>
  142. <table class="table table-condensed">
  143. <thead>
  144. <tr>
  145. <th colspan="3">
  146. Overview
  147. </th>
  148. </tr>
  149. </thead>
  150. <tbody>
  151. <tr>
  152. <td><a href="#configuration-options-multiple"><code>multiple</code></a></td>
  153. <td><a href="#configuration-options-enableHTML"><code>enableHTML</code></a></td>
  154. <td><a href="#configuration-options-enableClickableOptGroups"><code>enableClickableOptGroups</code></a></td>
  155. </tr>
  156. <tr>
  157. <td><a href="#configuration-options-enableCollapsibleOptGroups"><code>enableCollapsibleOptGroups</code></a></td>
  158. <td><a href="#configuration-options-collapseOptGroupsByDefault"><code>collapseOptGroupsByDefault</code></a></td>
  159. <td><a href="#configuration-options-disableIfEmpty"><code>disableIfEmpty</code></a></td>
  160. </tr>
  161. <td><a href="#configuration-options-dropRight"><code>dropRight</code></a></td>
  162. <td><a href="#configuration-options-dropUp"><code>dropUp</code></a></td>
  163. <td><a href="#configuration-options-maxHeight"><code>maxHeight</code></a></td>
  164. </tr>
  165. <tr>
  166. <td><a href="#configuration-options-disableIfEmpty"><code>disableIfEmpty</code></a></td>
  167. <td><a href="#configuration-options-disabledText"><code>disabledText</code></a>
  168. <td><a href="#configuration-options-onChange"><code>onChange</code></a></td>
  169. </tr>
  170. <tr>
  171. <td><a href="#configuration-options-onInitialized"><code>onInitialized</code></a></td>
  172. <td><a href="#configuration-options-onDropdownShow"><code>onDropdownShow</code></a></td>
  173. <td><a href="#configuration-options-onDropdownHide"><code>onDropdownHide</code></a></td>
  174. </tr>
  175. <tr>
  176. <td><a href="#configuration-options-onDropdownShown"><code>onDropdownShown</code></a></td>
  177. <td><a href="#configuration-options-onDropdownHidden"><code>onDropdownHidden</code></a></td>
  178. <td><a href="#configuration-options-buttonClass"><code>buttonClass</code></a></td>
  179. </tr>
  180. <tr>
  181. <td><a href="#configuration-options-inheritClass"><code>inheritClass</code></a></td>
  182. <td><a href="#configuration-options-buttonContainer"><code>buttonContainer</code></a></td>
  183. <td><a href="#configuration-options-buttonWidth"><code>buttonWidth</code></a></td>
  184. </tr>
  185. <tr>
  186. <td><a href="#configuration-options-buttonText"><code>buttonText</code></a></td>
  187. <td><a href="#configuration-options-buttonTitle"><code>buttonTitle</code></a></td>
  188. <td><a href="#configuration-options-nonSelectedText"><code>nonSelectedText</code></a></td>
  189. </tr>
  190. <tr>
  191. <td><a href="#configuration-options-nSelectedText"><code>nSelectedText</code></a></td>
  192. <td><a href="#configuration-options-allSelectedText"><code>allSelectedText</code></a></td>
  193. <td><a href="#configuration-options-numberDisplayed"><code>numberDisplayed</code></a></td>
  194. </tr>
  195. <tr>
  196. <td><a href="#configuration-options-delimiterText"><code>delimiterText</code></a></td>
  197. <td><a href="#configuration-options-optionLabel"><code>optionLabel</code></a></td>
  198. <td><a href="#configuration-options-optionClass"><code>optionClass</code></a></td>
  199. </tr>
  200. <tr>
  201. <td><a href="#configuration-options-selectedClass"><code>selectedClass</code></a></td>
  202. <td><a href="#configuration-options-includeSelectAllOption"><code>includeSelectAllOption</code></a></td>
  203. <td><a href="#configuration-options-selectAllJustVisible"><code>selectAllJustVisible</code></a></td>
  204. </tr>
  205. <tr>
  206. <td><a href="#configuration-options-selectAllText"><code>selectAllText</code></a></td>
  207. <td><a href="#configuration-options-selectAllValue"><code>selectAllValue</code></a></td>
  208. <td><a href="#configuration-options-selectAllName"><code>selectAllName</code></a></td>
  209. </tr>
  210. <tr>
  211. <td><a href="#configuration-options-selectAllNumber"><code>selectAllNumber</code></a></td>
  212. <td><a href="#configuration-options-onSelectAll"><code>onSelectAll</code></a></td>
  213. <td><a href="#configuration-options-onDeselectAll"><code>onDeselectAll</code></a></td>
  214. </tr>
  215. <tr>
  216. <td><a href="#configuration-options-enableFiltering"><code>enableFiltering</code></a></td>
  217. <td><a href="#configuration-options-enableCaseInsensitiveFiltering"><code>enableCaseInsensitiveFiltering</code></a></td>
  218. <td><a href="#configuration-options-enableFullValueFiltering"><code>enableFullValueFiltering</code></a></td>
  219. </tr>
  220. <tr>
  221. <td><a href="#configuration-options-filterBehavior"><code>filterBehavior</code></a></td>
  222. <td><a href="#configuration-options-filterPlaceholder"><code>filterPlaceholder</code></a></td>
  223. <td><a href="#configuration-options-includeResetOption"><code>includeResetOption</code></a></td>
  224. </tr>
  225. <tr>
  226. <td><a href="#configuration-options-includeResetDivider"><code>includeResetDivider</code></a></td>
  227. <td><a href="#configuration-options-resetText"><code>resetText</code></a></td>
  228. </tr>
  229. </tbody>
  230. </table>
  231. <p class="alert alert-info">
  232. Use Firebug, Chrome Developer Tools to get the best out of the below examples.
  233. </p>
  234. <table class="table layout-fixed">
  235. <tbody>
  236. <tr>
  237. <td width="30%"><code id="configuration-options-multiple">multiple</code></td>
  238. <td>
  239. <p>
  240. <code>multiple</code> is not a real configuration option. It refers to the <code>multiple</code> attribute of the <code>select</code> the plugin is applied on. When the <code>multiple</code> attribute of the <code>select</code> is present, the plugin uses checkboxes to allow multiple selections. If it is not present, the plugin uses radio buttons to allow single selections. When using the plugin for single selections (without the <code>multiple</code> attribute present), the first option will automatically be selected if no other option is selected in advance. See <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/129">#129</a> for how to avoid this behavior.
  241. </p>
  242. <p>
  243. The following example shows the default behavior when the <code>multiple</code> attribute is omitted:
  244. </p>
  245. <div class="example">
  246. <script type="text/javascript">
  247. $(document).ready(function() {
  248. $('#example-single').multiselect();
  249. });
  250. </script>
  251. <select id="example-single">
  252. <option value="1">Option 1</option>
  253. <option value="2">Option 2</option>
  254. <option value="3">Option 3</option>
  255. <option value="4">Option 4</option>
  256. <option value="5">Option 5</option>
  257. <option value="6">Option 6</option>
  258. </select>
  259. </div>
  260. <div class="highlight">
  261. <pre class="prettyprint linenums">
  262. &lt;script type=&quot;text/javascript&quot;&gt;
  263. $('#example-single').multiselect();
  264. &lt;/script&gt;
  265. &lt;!-- Note the missing multiple attribute! --&gt;
  266. &lt;select id="example-single"&gt;
  267. &lt;option value="1"&gt;Option 1&lt;/option&gt;
  268. &lt;option value="2"&gt;Option 2&lt;/option&gt;
  269. &lt;option value="3"&gt;Option 3&lt;/option&gt;
  270. &lt;option value="4"&gt;Option 4&lt;/option&gt;
  271. &lt;option value="5"&gt;Option 5&lt;/option&gt;
  272. &lt;option value="6"&gt;Option 6&lt;/option&gt;
  273. &lt;/select&gt;
  274. </pre>
  275. </div>
  276. <p>
  277. If multiple options are selected in advance and the <code>select</code> lacks the <code>multiple</code> attribute, the last option marked as <code>selected</code> will initially be selected by the plugin.
  278. </p>
  279. <div class="example">
  280. <script type="text/javascript">
  281. $(document).ready(function() {
  282. $('#example-single-selected').multiselect();
  283. });
  284. </script>
  285. <select id="example-single-selected">
  286. <option value="1">Option 1</option>
  287. <option value="2" selected="selected">Option 2</option>
  288. <option value="3" selected="selected">Option 3</option>
  289. <option value="4">Option 4</option>
  290. <option value="5">Option 5</option>
  291. <option value="6">Option 6</option>
  292. </select>
  293. </div>
  294. <div class="highlight">
  295. <pre class="prettyprint linenums">
  296. &lt;script type=&quot;text/javascript&quot;&gt;
  297. $('#example-single-selected').multiselect();
  298. &lt;/script&gt;
  299. &lt;!-- Note the missing multiple attribute! --&gt;
  300. &lt;select id="example-single-selected"&gt;
  301. &lt;option value="1"&gt;Option 1&lt;/option&gt;
  302. &lt;option value="2" selected="selected"&gt;Option 2&lt;/option&gt;
  303. &lt;!-- Option 3 will be selected in advance ... --&gt;
  304. &lt;option value="3" selected="selected"&gt;Option 3&lt;/option&gt;
  305. &lt;option value="4"&gt;Option 4&lt;/option&gt;
  306. &lt;option value="5"&gt;Option 5&lt;/option&gt;
  307. &lt;option value="6"&gt;Option 6&lt;/option&gt;
  308. &lt;/select&gt;
  309. </pre>
  310. </div>
  311. <p>
  312. The following example shows the default behavior when the <code>multiple</code> attribute is present. Initially selected options will be adopted automatically:
  313. </p>
  314. <div class="example">
  315. <script type="text/javascript">
  316. $(document).ready(function() {
  317. $('#example-multiple-selected').multiselect();
  318. });
  319. </script>
  320. <select id="example-multiple-selected" multiple="multiple">
  321. <option value="1">Option 1</option>
  322. <option value="2" selected="selected">Option 2</option>
  323. <option value="3" selected="selected">Option 3</option>
  324. <option value="4">Option 4</option>
  325. <option value="5">Option 5</option>
  326. <option value="6">Option 6</option>
  327. </select>
  328. </div>
  329. <div class="highlight">
  330. <pre class="prettyprint linenums">
  331. &lt;script type=&quot;text/javascript&quot;&gt;
  332. $('#example-multiple-selected').multiselect();
  333. &lt;/script&gt;
  334. &lt;!-- Note the missing multiple attribute! --&gt;
  335. &lt;select id="example-multiple-selected" multiple="multiple"&gt;
  336. &lt;option value="1"&gt;Option 1&lt;/option&gt;
  337. &lt;option value="2" selected="selected"&gt;Option 2&lt;/option&gt;
  338. &lt;!-- Option 3 will be selected in advance ... --&gt;
  339. &lt;option value="3" selected="selected"&gt;Option 3&lt;/option&gt;
  340. &lt;option value="4"&gt;Option 4&lt;/option&gt;
  341. &lt;option value="5"&gt;Option 5&lt;/option&gt;
  342. &lt;option value="6"&gt;Option 6&lt;/option&gt;
  343. &lt;/select&gt;
  344. </pre>
  345. <p>
  346. The plugin naturally supports <code>optgroup</code>s, however the group headers are not clickable by default. See the <code>enableClickableOptGroups</code> option for details.
  347. </p>
  348. <div class="example">
  349. <script type="text/javascript">
  350. $(document).ready(function() {
  351. $('#example-multiple-optgroups').multiselect();
  352. });
  353. </script>
  354. <select id="example-multiple-optgroups" multiple="multiple">
  355. <optgroup label="Group 1">
  356. <option value="1-1">Option 1.1</option>
  357. <option value="1-2" selected="selected">Option 1.2</option>
  358. <option value="1-3" selected="selected">Option 1.3</option>
  359. </optgroup>
  360. <optgroup label="Group 2">
  361. <option value="2-1">Option 2.1</option>
  362. <option value="2-2">Option 2.2</option>
  363. <option value="2-3">Option 2.3</option>
  364. </optgroup>
  365. </select>
  366. </div>
  367. <div class="highlight">
  368. <pre class="prettyprint linenums">
  369. &lt;script type=&quot;text/javascript&quot;&gt;
  370. $('#example-multiple-optgroups').multiselect();
  371. &lt;/script&gt;
  372. &lt;select id=&quot;example-multiple-optgroups&quot;&gt;
  373. &lt;optgroup label=&quot;Group 1&quot;&gt;
  374. &lt;option value=&quot;1-1&quot;&gt;Option 1.1&lt;/option&gt;
  375. &lt;option value=&quot;1-2&quot; selected=&quot;selected&quot;&gt;Option 1.2&lt;/option&gt;
  376. &lt;option value=&quot;1-3&quot; selected=&quot;selected&quot;&gt;Option 1.3&lt;/option&gt;
  377. &lt;/optgroup&gt;
  378. &lt;optgroup label=&quot;Group 2&quot;&gt;
  379. &lt;option value=&quot;2-1&quot;&gt;Option 2.1&lt;/option&gt;
  380. &lt;option value=&quot;2-2&quot;&gt;Option 2.2&lt;/option&gt;
  381. &lt;option value=&quot;2-3&quot;&gt;Option 2.3&lt;/option&gt;
  382. &lt;/optgroup&gt;
  383. &lt;/select&gt;
  384. </pre>
  385. </div>
  386. <p>
  387. Note that the classes of the <code>optgroup</code>s are adopted, allowing to select individual <code>optgroup</code>s easily (inspect the created markup to note the difference!):
  388. </p>
  389. <div class="example">
  390. <script type="text/javascript">
  391. $(document).ready(function() {
  392. $('#example-multiple-optgroups-classes').multiselect();
  393. });
  394. </script>
  395. <select id="example-multiple-optgroups-classes" multiple="multiple">
  396. <optgroup label="Group 1" class="group-1">
  397. <option value="1-1">Option 1.1</option>
  398. <option value="1-2" selected="selected">Option 1.2</option>
  399. <option value="1-3" selected="selected">Option 1.3</option>
  400. </optgroup>
  401. <optgroup label="Group 2" class="group-2">
  402. <option value="2-1">Option 2.1</option>
  403. <option value="2-2">Option 2.2</option>
  404. <option value="2-3">Option 2.3</option>
  405. </optgroup>
  406. </select>
  407. </div>
  408. <div class="highlight">
  409. <pre class="prettyprint linenums">
  410. &lt;script type=&quot;text/javascript&quot;&gt;
  411. $('#example-multiple-optgroups-classes').multiselect();
  412. &lt;/script&gt;
  413. &lt;select id=&quot;example-multiple-optgroups&quot;&gt;
  414. &lt;optgroup label=&quot;Group 1&quot; class=&quot;group-1&quot;&gt;
  415. &lt;option value=&quot;1-1&quot;&gt;Option 1.1&lt;/option&gt;
  416. &lt;option value=&quot;1-2&quot; selected=&quot;selected&quot;&gt;Option 1.2&lt;/option&gt;
  417. &lt;option value=&quot;1-3&quot; selected=&quot;selected&quot;&gt;Option 1.3&lt;/option&gt;
  418. &lt;/optgroup&gt;
  419. &lt;optgroup label=&quot;Group 2&quot; class=&quot;group-2&quot;&gt;
  420. &lt;option value=&quot;2-1&quot;&gt;Option 2.1&lt;/option&gt;
  421. &lt;option value=&quot;2-2&quot;&gt;Option 2.2&lt;/option&gt;
  422. &lt;option value=&quot;2-3&quot;&gt;Option 2.3&lt;/option&gt;
  423. &lt;/optgroup&gt;
  424. &lt;/select&gt;
  425. </pre>
  426. </td>
  427. </tr>
  428. <tr>
  429. <td><code id="configuration-options-enableHTML">enableHTML</code></td>
  430. <td>
  431. <p>
  432. XSS injection is a serious threat for all modern web applications. Setting <code>enableHTML</code> to <code>false</code> (default setting) will create a XSS safe multiselect.
  433. </p>
  434. <div class="example">
  435. <script type="text/javascript">
  436. $(document).ready(function() {
  437. $('#example-xss').multiselect();
  438. });
  439. </script>
  440. <select id="example-xss" multiple="multiple">
  441. <option value="1">&lt;script&gt;alert(1);&lt;/script&gt;</option>
  442. </select>
  443. </div>
  444. <div class="highlight">
  445. <pre class="prettyprint linenums">
  446. &lt;script type="text/javascript"&gt;
  447. $(document).ready(function() {
  448. $('#example-xss').multiselect();
  449. });
  450. &lt;/script&gt;
  451. &lt;select id="example-xss" multiple="multiple"&gt;
  452. &lt;option value="1"&gt;&amp;lt;script&amp;gt;alert(1);&amp;lt;/script&amp;gt;&lt;/option&gt;
  453. &lt;/select&gt;
  454. </pre>
  455. <p>On the other hand, when setting <code>enableHTML</code> to <code>true</code>, the plugin will support HTML within <code>option</code>s:</p>
  456. <div class="example">
  457. <script type="text/javascript">
  458. $(document).ready(function() {
  459. $('#example-xss-html').multiselect({
  460. nonSelectedText: '<span style="color:red;">Non selected ...</span>',
  461. enableHTML: true
  462. });
  463. });
  464. </script>
  465. <select id="example-xss-html" multiple="multiple">
  466. <option value="1">&lt;span style=&quot;color:red&quot;&gt;Option 1&lt;/span&gt;</option>
  467. </select>
  468. </div>
  469. <div class="highlight">
  470. <pre class="prettyprint linenums">
  471. &lt;script type="text/javascript"&gt;
  472. $(document).ready(function() {
  473. $('#example-xss-html').multiselect();
  474. });
  475. &lt;/script&gt;
  476. &lt;select id="example-xss-html" multiple="multiple"&gt;
  477. &lt;option value="1"&gt;&amp;gt;span style="color:red"&amp;lt;Option 1&amp;gt;/span&amp;gt;&lt;/option&gt;
  478. &lt;/select&gt;
  479. </pre>
  480. </td>
  481. </tr>
  482. <tr>
  483. <td><code id="configuration-options-enableClickableOptGroups">enableClickableOptGroups</code></td>
  484. <td>
  485. <p>
  486. If set to <code>true</code>, <code>optgroup</code>'s will be clickable, allowing to easily select multiple options belonging to the same group.
  487. </p>
  488. <p class="alert alert-warning">
  489. <code>enableClickableOptGroups</code> is not available in single selection mode, i.e. when the <code>multiple</code> attribute is not present.
  490. </p>
  491. <p class="alert alert-info">
  492. When using <code>selectedClass</code>, the selected classes are also applied on the option groups.
  493. </p>
  494. <div class="example">
  495. <script type="text/javascript">
  496. $(document).ready(function() {
  497. $('#example-enableClickableOptGroups').multiselect({
  498. enableClickableOptGroups: true
  499. });
  500. });
  501. </script>
  502. <select id="example-enableClickableOptGroups" multiple="multiple">
  503. <optgroup label="Group 1">
  504. <option value="1-1">Option 1.1</option>
  505. <option value="1-2" selected="selected">Option 1.2</option>
  506. <option value="1-3" selected="selected">Option 1.3</option>
  507. </optgroup>
  508. <optgroup label="Group 2">
  509. <option value="2-1">Option 2.1</option>
  510. <option value="2-2">Option 2.2</option>
  511. <option value="2-3">Option 2.3</option>
  512. </optgroup>
  513. </select>
  514. </div>
  515. <div class="highlight">
  516. <pre class="prettyprint linenums">
  517. &lt;script type=&quot;text/javascript&quot;&gt;
  518. $(document).ready(function() {
  519. $('#example-enableClickableOptGroups').multiselect({
  520. enableClickableOptGroups: true
  521. });
  522. });
  523. &lt;/script&gt;
  524. </pre>
  525. </div>
  526. <p>
  527. Note that this option does also work with disabled options:
  528. </p>
  529. <div class="example">
  530. <script type="text/javascript">
  531. $(document).ready(function() {
  532. $('#example-enableClickableOptGroups-disabled').multiselect({
  533. enableClickableOptGroups: true,
  534. includeSelectAllOption: true
  535. });
  536. });
  537. </script>
  538. <select id="example-enableClickableOptGroups-disabled" multiple="multiple">
  539. <optgroup label="Group 1">
  540. <option value="1-1" disabled>Option 1.1</option>
  541. <option value="1-2" selected="selected">Option 1.2</option>
  542. <option value="1-3" selected="selected">Option 1.3</option>
  543. </optgroup>
  544. <optgroup label="Group 2">
  545. <option value="2-1" disabled>Option 2.1</option>
  546. <option value="2-2">Option 2.2</option>
  547. <option value="2-3">Option 2.3</option>
  548. </optgroup>
  549. </select>
  550. </div>
  551. <div class="highlight">
  552. <pre class="prettyprint linenums">
  553. &lt;script type=&quot;text/javascript&quot;&gt;
  554. $(document).ready(function() {
  555. $('#example-enableClickableOptGroups-disabled').multiselect({
  556. enableClickableOptGroups: true
  557. });
  558. });
  559. &lt;/script&gt;
  560. </pre>
  561. </div>
  562. <p>
  563. Note that the behavior of <code>onChange</code> changes. Whenever an optgroup is changed/clicked, the <code>onChange</code> event is fired with all affected options as first parameter.
  564. </p>
  565. <div class="example">
  566. <script type="text/javascript">
  567. $(document).ready(function() {
  568. $('#example-enableClickableOptGroups-onChange').multiselect({
  569. enableClickableOptGroups: true,
  570. onChange: function(option, checked) {
  571. alert(option.length + ' options ' + (checked ? 'selected' : 'deselected'));
  572. }
  573. });
  574. });
  575. </script>
  576. <select id="example-enableClickableOptGroups-onChange" multiple="multiple">
  577. <optgroup label="Group 1">
  578. <option value="1-1">Option 1.1</option>
  579. <option value="1-2" selected="selected">Option 1.2</option>
  580. <option value="1-3" selected="selected">Option 1.3</option>
  581. </optgroup>
  582. <optgroup label="Group 2">
  583. <option value="2-1">Option 2.1</option>
  584. <option value="2-2">Option 2.2</option>
  585. <option value="2-3">Option 2.3</option>
  586. </optgroup>
  587. </select>
  588. </div>
  589. <div class="highlight">
  590. <pre class="prettyprint linenums">
  591. &lt;script type=&quot;text/javascript&quot;&gt;
  592. $(document).ready(function() {
  593. $('#example-enableClickableOptGroups-onChange').multiselect({
  594. enableClickableOptGroups: true,
  595. onChange: function(option, checked) {
  596. alert(option.length + ' options ' + (checked ? 'selected' : 'deselected'));
  597. }
  598. });
  599. });
  600. &lt;/script&gt;
  601. </pre>
  602. </div>
  603. <p>
  604. Note that the <code>optgroup</code>'s are automatically selected if a whole group is selected by default:
  605. </p>
  606. <div class="example">
  607. <script type="text/javascript">
  608. $(document).ready(function() {
  609. $('#example-enableClickableOptGroups-init').multiselect({
  610. enableClickableOptGroups: true
  611. });
  612. });
  613. </script>
  614. <select id="example-enableClickableOptGroups-init" multiple="multiple">
  615. <optgroup label="Group 1">
  616. <option value="1-1" disabled="disabled">Option 1.1</option>
  617. <option value="1-2" selected="selected">Option 1.2</option>
  618. <option value="1-3" selected="selected">Option 1.3</option>
  619. </optgroup>
  620. <optgroup label="Group 2">
  621. <option value="2-1">Option 2.1</option>
  622. <option value="2-2">Option 2.2</option>
  623. <option value="2-3">Option 2.3</option>
  624. </optgroup>
  625. </select>
  626. </div>
  627. <div class="highlight">
  628. <pre class="prettyprint linenums">
  629. &lt;script type=&quot;text/javascript&quot;&gt;
  630. $(document).ready(function() {
  631. $('#example-enableClickableOptGroups-init').multiselect({
  632. enableClickableOptGroups: true
  633. });
  634. });
  635. &lt;/script&gt;
  636. </pre>
  637. </div>
  638. </td>
  639. </tr>
  640. <tr>
  641. <td><code id="configuration-options-enableCollapsibleOptGroups">enableCollapsibleOptGroups</code></td>
  642. <td>
  643. <p>
  644. If set to <code>true</code>, <code>optgroup</code>'s will be collapsible.
  645. </p>
  646. <div class="example">
  647. <script type="text/javascript">
  648. $(document).ready(function() {
  649. $('#example-enableCollapsibleOptGroups').multiselect({
  650. enableCollapsibleOptGroups: true,
  651. buttonContainer: '<div id="example-enableCollapisbleOptGroups-container" />'
  652. });
  653. });
  654. </script>
  655. <select id="example-enableCollapsibleOptGroups" multiple="multiple">
  656. <optgroup label="Group 1">
  657. <option value="1-1" disabled>Option 1.1</option>
  658. <option value="1-2" selected="selected">Option 1.2</option>
  659. <option value="1-3" selected="selected">Option 1.3</option>
  660. </optgroup>
  661. <optgroup label="Group 2">
  662. <option value="2-1">Option 2.1</option>
  663. <option value="2-2">Option 2.2</option>
  664. <option value="2-3">Option 2.3</option>
  665. </optgroup>
  666. </select>
  667. </div>
  668. <div class="highlight">
  669. <pre class="prettyprint linenums">
  670. &lt;script type=&quot;text/javascript&quot;&gt;
  671. $(document).ready(function() {
  672. $('#example-enableCollapsibleOptGroups').multiselect({
  673. enableCollapsibleOptGroups: true
  674. });
  675. });
  676. &lt;/script&gt;
  677. </pre>
  678. </div>
  679. <p>
  680. Both options, <code>enableCollapsibleOptGroups</code> and <code>enableClickableOptGroups</code>, can also be combined:
  681. </p>
  682. <p class="alert alert-warning">
  683. Note, however, that the behavior of combining both options might not be as expected - play around with the below example to get some intuition.
  684. </p>
  685. <div class="example">
  686. <script type="text/javascript">
  687. $(document).ready(function() {
  688. $('#example-enableCollapsibleOptGroups-enableClickableOptGroups').multiselect({
  689. enableClickableOptGroups: true,
  690. enableCollapsibleOptGroups: true
  691. });
  692. });
  693. </script>
  694. <select id="example-enableCollapsibleOptGroups-enableClickableOptGroups" multiple="multiple">
  695. <optgroup label="Group 1">
  696. <option value="1-1" disabled>Option 1.1</option>
  697. <option value="1-2" selected="selected">Option 1.2</option>
  698. <option value="1-3" selected="selected">Option 1.3</option>
  699. </optgroup>
  700. <optgroup label="Group 2">
  701. <option value="2-1">Option 2.1</option>
  702. <option value="2-2">Option 2.2</option>
  703. <option value="2-3">Option 2.3</option>
  704. </optgroup>
  705. </select>
  706. </div>
  707. <div class="highlight">
  708. <pre class="prettyprint linenums">
  709. &lt;script type=&quot;text/javascript&quot;&gt;
  710. $(document).ready(function() {
  711. $('#example-enableCollapsibleOptGroups-enableClickableOptGroups').multiselect({
  712. enableClickableOptGroups: true,
  713. enableCollapsibleOptGroups: true
  714. });
  715. });
  716. &lt;/script&gt;
  717. </pre>
  718. </div>
  719. <p>
  720. The groups can be collapsed by default using the following simple trick:
  721. </p>
  722. <div class="example">
  723. <script type="text/javascript">
  724. $(document).ready(function() {
  725. $('#example-enableCollapsibleOptGroups-collapsed').multiselect({
  726. enableCollapsibleOptGroups: true,
  727. buttonContainer: '<div id="example-enableCollapsibleOptGroups-collapsed-container" />'
  728. });
  729. $('#example-enableCollapsibleOptGroups-collapsed-container .caret-container').click();
  730. });
  731. </script>
  732. <select id="example-enableCollapsibleOptGroups-collapsed" multiple="multiple">
  733. <optgroup label="Group 1">
  734. <option value="1-1" disabled>Option 1.1</option>
  735. <option value="1-2" selected="selected">Option 1.2</option>
  736. <option value="1-3" selected="selected">Option 1.3</option>
  737. </optgroup>
  738. <optgroup label="Group 2">
  739. <option value="2-1">Option 2.1</option>
  740. <option value="2-2">Option 2.2</option>
  741. <option value="2-3">Option 2.3</option>
  742. </optgroup>
  743. </select>
  744. </div>
  745. <div class="highlight">
  746. <pre class="prettyprint linenums">
  747. &lt;script type=&quot;text/javascript&quot;&gt;
  748. $(document).ready(function() {
  749. $('#example-enableCollapsibleOptGroups-collapsed').multiselect({
  750. enableCollapsibleOptGroups: true,
  751. buttonContainer: '&lt;div id=&quot;example-enableCollapsibleOptGroups-collapsed-container&quot; /&gt;'
  752. });
  753. $('#example-enableCollapsibleOptGroups-collapsed-container .caret-container').click();
  754. });
  755. &lt;/script&gt;
  756. </pre>
  757. </div>
  758. <p>
  759. Combining the above with <code>enableFiltering</code> and <code>includeSelectAllOption</code>:
  760. </p>
  761. <p class="alert alert-warning">
  762. Again, note, that the behavior of combining <code>enableCollapsibleOptGroups</code>, <code>enableCollapsibleOptGroups</code>, <code>enableFiltering</code> and <code>includeSelectAllOption</code> is not thoroughly tested. <b>Experiment with the example below to get some intuition.</b>
  763. </p>
  764. <div class="example">
  765. <script type="text/javascript">
  766. $(document).ready(function() {
  767. $('#example-enableCollapsibleOptGroups-enableClickableOptGroups-enableFiltering-includeSelectAllOption').multiselect({
  768. enableClickableOptGroups: true,
  769. enableCollapsibleOptGroups: true,
  770. enableFiltering: true,
  771. includeSelectAllOption: true
  772. });
  773. });
  774. </script>
  775. <select id="example-enableCollapsibleOptGroups-enableClickableOptGroups-enableFiltering-includeSelectAllOption" multiple="multiple">
  776. <optgroup label="Group 1">
  777. <option value="1-1" disabled>Option 1.1</option>
  778. <option value="1-2" selected="selected">Option 1.2</option>
  779. <option value="1-3" selected="selected">Option 1.3</option>
  780. </optgroup>
  781. <optgroup label="Group 2">
  782. <option value="2-1">Option 2.1</option>
  783. <option value="2-2">Option 2.2</option>
  784. <option value="2-3">Option 2.3</option>
  785. </optgroup>
  786. </select>
  787. </div>
  788. <div class="highlight">
  789. <pre class="prettyprint linenums">
  790. &lt;script type=&quot;text/javascript&quot;&gt;
  791. $(document).ready(function() {
  792. $('#example-enableCollapsibleOptGroups-enableClickableOptGroups-enableFiltering-includeSelectAllOption').multiselect({
  793. enableClickableOptGroups: true,
  794. enableCollapsibleOptGroups: true,
  795. enableFiltering: true,
  796. includeSelectAllOption: true
  797. });
  798. });
  799. &lt;/script&gt;
  800. </pre>
  801. </div>
  802. </td>
  803. </tr>
  804. <tr>
  805. <td><code id="configuration-options-collapseOptGroupsByDefault">collapseOptGroupsByDefault</code></td>
  806. <td>
  807. <p>This option will collapse all <code>optgroup</code>s by default.</p>
  808. <p class="alert alert-info">There is also an example in the <a href="#further-examples">Further Examples</a> section demonstrating an alternative way of collapsing <code>optgroups</code> by default.</a></p>
  809. <div class="example">
  810. <script type="text/javascript">
  811. $(document).ready(function() {
  812. $('#example-collapseOptGroupsByDefault').multiselect({
  813. enableCollapsibleOptGroups: true,
  814. collapseOptGroupsByDefault: true
  815. });
  816. });
  817. </script>
  818. <select id="example-collapseOptGroupsByDefault" multiple="multiple">
  819. <optgroup label="Group 1">
  820. <option value="1-1" disabled>Option 1.1</option>
  821. <option value="1-2" selected="selected">Option 1.2</option>
  822. <option value="1-3" selected="selected">Option 1.3</option>
  823. </optgroup>
  824. <optgroup label="Group 2">
  825. <option value="2-1">Option 2.1</option>
  826. <option value="2-2">Option 2.2</option>
  827. <option value="2-3">Option 2.3</option>
  828. </optgroup>
  829. </select>
  830. </div>
  831. <div class="highlight">
  832. <pre class="prettyprint linenums">
  833. &lt;script type=&quot;text/javascript&quot;&gt;
  834. $(document).ready(function() {
  835. $('#example-collapseOptGroupsByDefault').multiselect({
  836. enableCollapsibleOptGroups: true,
  837. collapseOptGroupsByDefault: true
  838. });
  839. });
  840. &lt;/script&gt;
  841. </pre>
  842. </div>
  843. </td>
  844. </tr>
  845. <tr>
  846. <td><code id="configuration-options-disableIfEmpty">disableIfEmpty</code></td>
  847. <td>
  848. <p>
  849. If set to <code>true</code>, the multiselect will be disabled if no options are given.
  850. </p>
  851. <div class="example">
  852. <script type="text/javascript">
  853. $(document).ready(function() {
  854. $('#example-disableIfEmpty').multiselect({
  855. disableIfEmpty: true
  856. });
  857. });
  858. </script>
  859. <select id="example-disableIfEmpty" multiple="multiple"></select>
  860. </div>
  861. <div class="highlight">
  862. <pre class="prettyprint linenums">
  863. &lt;script type=&quot;text/javascript&quot;&gt;
  864. $(document).ready(function() {
  865. $('#example-disableIfEmpty').multiselect({
  866. disableIfEmpty: true
  867. });
  868. });
  869. &lt;/script&gt;
  870. </pre>
  871. </div>
  872. </td>
  873. </tr>
  874. <tr>
  875. <td><code id="configuration-options-disabledText">disabledText</code></td>
  876. <td>
  877. <p>
  878. The text shown if the multiselect is disabled. Note that this option is set to the empty string <code>''</code> by default, that is <code>nonSelectedText</code> is shown if the multiselect is disabled and no options are selected.
  879. </p>
  880. <div class="example">
  881. <script type="text/javascript">
  882. $(document).ready(function() {
  883. $('#example-disabledText').multiselect({
  884. disableIfEmpty: true,
  885. disabledText: 'Disabled ...'
  886. });
  887. });
  888. </script>
  889. <select id="example-disabledText" multiple="multiple"></select>
  890. </div>
  891. <div class="highlight">
  892. <pre class="prettyprint linenums">
  893. &lt;script type=&quot;text/javascript&quot;&gt;
  894. $(document).ready(function() {
  895. $('#example-disabledText').multiselect({
  896. disableIfEmpty: true,
  897. disabledText: 'Disabled ...'
  898. });
  899. });
  900. &lt;/script&gt;
  901. </pre>
  902. </div>
  903. <p>
  904. The <code>disabledText</code> option does also work when the underlying <code>select</code> is disabled:
  905. </p>
  906. <div class="example">
  907. <script type="text/javascript">
  908. $(document).ready(function() {
  909. $('#example-disabledText-disabled').multiselect({
  910. disabledText: 'Disabled ...'
  911. });
  912. });
  913. </script>
  914. <select id="example-disabledText-disabled" multiple="multiple" disabled="disabled">
  915. <option value="1">Option 1</option>
  916. <option value="2">Option 2</option>
  917. <option value="3">Option 3</option>
  918. <option value="4">Option 4</option>
  919. <option value="5">Option 5</option>
  920. <option value="6">Option 6</option>
  921. </select>
  922. </div>
  923. <div class="highlight">
  924. <pre class="prettyprint linenums">
  925. &lt;script type=&quot;text/javascript&quot;&gt;
  926. $(document).ready(function() {
  927. $('#example-disabledText-disabled').multiselect({
  928. disabledText: 'Disabled ...'
  929. });
  930. });
  931. &lt;/script&gt;
  932. &lt;select id=&quot;example-disabledText-disabled&quot; multiple=&quot;multiple&quot; disabled=&quot;disabled&quot;&gt;
  933. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  934. &lt;option value=&quot;2&quot;&gt;Option 2&lt;/option&gt;
  935. &lt;option value=&quot;3&quot;&gt;Option 3&lt;/option&gt;
  936. &lt;option value=&quot;4&quot;&gt;Option 4&lt;/option&gt;
  937. &lt;option value=&quot;5&quot;&gt;Option 5&lt;/option&gt;
  938. &lt;option value=&quot;6&quot;&gt;Option 6&lt;/option&gt;
  939. &lt;/select&gt;
  940. </pre>
  941. </div>
  942. <p>
  943. Note that selected options will still be shown:
  944. </p>
  945. <div class="example">
  946. <script type="text/javascript">
  947. $(document).ready(function() {
  948. $('#example-disabledText-disabled-selected').multiselect({
  949. disabledText: 'Disabled ...'
  950. });
  951. });
  952. </script>
  953. <select id="example-disabledText-disabled-selected" multiple="multiple" disabled="disabled">
  954. <option value="1">Option 1</option>
  955. <option value="2" selected="selected">Option 2</option>
  956. <option value="3" selected="selected">Option 3</option>
  957. <option value="4">Option 4</option>
  958. <option value="5">Option 5</option>
  959. <option value="6">Option 6</option>
  960. </select>
  961. </div>
  962. <div class="highlight">
  963. <pre class="prettyprint linenums">
  964. &lt;script type=&quot;text/javascript&quot;&gt;
  965. $(document).ready(function() {
  966. $('#example-disabledText-disabled-selected').multiselect({
  967. disabledText: 'Disabled ...'
  968. });
  969. });
  970. &lt;/script&gt;
  971. &lt;select id=&quot;example-disabledText-disabled-selected&quot; multiple=&quot;multiple&quot; disabled=&quot;disabled&quot;&gt;
  972. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  973. &lt;option value=&quot;2&quot; selected=&quot;selected&quot;&gt;Option 2&lt;/option&gt;
  974. &lt;option value=&quot;3&quot; selected=&quot;selected&quot;&gt;Option 3&lt;/option&gt;
  975. &lt;option value=&quot;4&quot;&gt;Option 4&lt;/option&gt;
  976. &lt;option value=&quot;5&quot;&gt;Option 5&lt;/option&gt;
  977. &lt;option value=&quot;6&quot;&gt;Option 6&lt;/option&gt;
  978. &lt;/select&gt;
  979. </pre>
  980. </div>
  981. </td>
  982. </tr>
  983. <tr>
  984. <td><code id="configuration-options-dropRight">dropRight</code></td>
  985. <td>
  986. <p>
  987. The dropdown can also be dropped right.
  988. </p>
  989. <div class="example">
  990. <script type="text/javascript">
  991. $(document).ready(function() {
  992. $('#example-dropRight').multiselect({
  993. buttonWidth: '400px',
  994. dropRight: true
  995. });
  996. });
  997. </script>
  998. <select id="example-dropRight" multiple="multiple">
  999. <option value="1">Option 1</option>
  1000. <option value="2">Option 2</option>
  1001. <option value="3">Option 3</option>
  1002. <option value="4">Option 4</option>
  1003. <option value="5">Option 5</option>
  1004. <option value="6">Option 6</option>
  1005. </select>
  1006. </div>
  1007. <div class="highlight">
  1008. <pre class="prettyprint linenums">
  1009. &lt;script type=&quot;text/javascript&quot;&gt;
  1010. $(document).ready(function() {
  1011. $('#example-dropRight').multiselect({
  1012. buttonWidth: '400px',
  1013. dropRight: true
  1014. });
  1015. });
  1016. &lt;/script&gt;
  1017. </pre>
  1018. </div>
  1019. </td>
  1020. </tr>
  1021. <tr>
  1022. <td><code id="configuration-options-dropUp">dropUp</code></td>
  1023. <td>
  1024. <p>
  1025. The dropdown can also be dropped up. Note that it is recommended to also set <code>maxHeight</code>. The plugin calculates the necessary height of the dropdown and takes the minimum of the calculated value and <code>maxHeight</code>.
  1026. </p>
  1027. <p class="alert alert-warning">
  1028. Note that this feature has been introduced in <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/594">#594</a> and is known to have issues depending on the environment.
  1029. </p>
  1030. <p class="alert alert-info">
  1031. An example of automatically adding the <code>dropUp</code> option when scrolling can be found in <a href="#further-examples">Further Examples</a>.
  1032. </p>
  1033. <div class="example">
  1034. <script type="text/javascript">
  1035. $(document).ready(function() {
  1036. $('#example-dropUp').multiselect({
  1037. enableFiltering: true,
  1038. includeSelectAllOption: true,
  1039. maxHeight: 400,
  1040. dropUp: true
  1041. });
  1042. });
  1043. </script>
  1044. <select id="example-dropUp" multiple="multiple">
  1045. <option value="1">Option 1</option>
  1046. <option value="2">Option 2</option>
  1047. <option value="3">Option 3</option>
  1048. <option data-role="divider"></option>
  1049. <option value="4">Option 4</option>
  1050. <option value="5">Option 5</option>
  1051. <option value="6">Option 6</option>
  1052. </select>
  1053. </div>
  1054. <div class="highlight">
  1055. <pre class="prettyprint linenums">
  1056. &lt;script type=&quot;text/javascript&quot;&gt;
  1057. $(document).ready(function() {
  1058. $('#example-dropUp').multiselect({
  1059. enableFiltering: true,
  1060. includeSelectAllOption: true,
  1061. maxHeight: 400,
  1062. dropUp: true
  1063. });
  1064. });
  1065. &lt;/script&gt;
  1066. &lt;select id=&quot;example-dropUp&quot; multiple=&quot;multiple&quot;&gt;
  1067. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  1068. &lt;option value=&quot;2&quot;&gt;Option 2&lt;/option&gt;
  1069. &lt;option value=&quot;3&quot;&gt;Option 3&lt;/option&gt;
  1070. &lt;option data-role=&quot;divider&quot;&gt;&lt;/option&gt;
  1071. &lt;option value=&quot;4&quot;&gt;Option 4&lt;/option&gt;
  1072. &lt;option value=&quot;5&quot;&gt;Option 5&lt;/option&gt;
  1073. &lt;option value=&quot;6&quot;&gt;Option 6&lt;/option&gt;
  1074. &lt;/select&gt;
  1075. </pre>
  1076. </div>
  1077. </td>
  1078. </tr>
  1079. <tr>
  1080. <td><code id="configuration-options-maxHeight">maxHeight</code></td>
  1081. <td>
  1082. <p>
  1083. The maximum height of the dropdown. This is useful when using the plugin with plenty of options.
  1084. </p>
  1085. <div class="example">
  1086. <p>
  1087. The multiselect on the left uses <code>maxHeight</code> set to <code>200</code>. On the other hand, the multiselect on the right does not use <code>maxHeight</code>.
  1088. </p>
  1089. <script type="text/javascript">
  1090. $(document).ready(function() {
  1091. $('#example-with-maxHeight').multiselect({
  1092. maxHeight: 200
  1093. });
  1094. });
  1095. </script>
  1096. <select id="example-with-maxHeight" multiple="multiple">
  1097. <option value="1">Option 1</option>
  1098. <option value="2">Option 2</option>
  1099. <option value="3">Option 3</option>
  1100. <option value="4">Option 4</option>
  1101. <option value="5">Option 5</option>
  1102. <option value="6">Option 6</option>
  1103. <option value="7">Option 7</option>
  1104. <option value="9">Option 8</option>
  1105. <option value="9">Option 9</option>
  1106. <option value="10">Option 10</option>
  1107. <option value="11">Option 11</option>
  1108. <option value="12">Option 12</option>
  1109. <option value="13">Option 13</option>
  1110. <option value="14">Option 14</option>
  1111. <option value="15">Option 15</option>
  1112. <option value="16">Option 16</option>
  1113. <option value="17">Option 17</option>
  1114. <option value="18">Option 18</option>
  1115. <option value="19">Option 19</option>
  1116. <option value="20">Option 20</option>
  1117. </select>
  1118. <script type="text/javascript">
  1119. $(document).ready(function() {
  1120. $('#example-without-maxHeight').multiselect();
  1121. });
  1122. </script>
  1123. <select id="example-without-maxHeight" multiple="multiple">
  1124. <option value="1">Option 1</option>
  1125. <option value="2">Option 2</option>
  1126. <option value="3">Option 3</option>
  1127. <option value="4">Option 4</option>
  1128. <option value="5">Option 5</option>
  1129. <option value="6">Option 6</option>
  1130. <option value="7">Option 7</option>
  1131. <option value="9">Option 8</option>
  1132. <option value="9">Option 9</option>
  1133. <option value="10">Option 10</option>
  1134. <option value="11">Option 11</option>
  1135. <option value="12">Option 12</option>
  1136. <option value="13">Option 13</option>
  1137. <option value="14">Option 14</option>
  1138. <option value="15">Option 15</option>
  1139. <option value="16">Option 16</option>
  1140. <option value="17">Option 17</option>
  1141. <option value="18">Option 18</option>
  1142. <option value="19">Option 19</option>
  1143. <option value="20">Option 20</option>
  1144. </select>
  1145. </div>
  1146. <div class="highlight">
  1147. <pre class="prettyprint linenums">
  1148. &lt;script type=&quot;text/javascript&quot;&gt;
  1149. $(document).ready(function() {
  1150. $('#example-with-maxHeight').multiselect({
  1151. maxHeight: 200
  1152. });
  1153. });
  1154. &lt;/script&gt;
  1155. </pre>
  1156. </div>
  1157. </td>
  1158. </tr>
  1159. <tr>
  1160. <td><code id="configuration-options-checkboxName">checkboxName</code></td>
  1161. <td>
  1162. <p>
  1163. The name used for the generated checkboxes. See <a href="#post">Server-Side Processing</a> for details.
  1164. </p>
  1165. <div class="example">
  1166. <script type="text/javascript">
  1167. $(document).ready(function() {
  1168. $('#example-checkboxName').multiselect({
  1169. checkboxName: function(option) {
  1170. return 'multiselect[]';
  1171. }
  1172. });
  1173. });
  1174. </script>
  1175. <select id="example-checkboxName" multiple="multiple">
  1176. <option value="1">Option 1</option>
  1177. <option value="2">Option 2</option>
  1178. <option value="3">Option 3</option>
  1179. <option value="4">Option 4</option>
  1180. <option value="5">Option 5</option>
  1181. <option value="6">Option 6</option>
  1182. </select>
  1183. </div>
  1184. <div class="highlight">
  1185. <pre class="prettyprint linenums">
  1186. &lt;script type=&quot;text/javascript&quot;&gt;
  1187. $(document).ready(function() {
  1188. $('#example-checkboxName').multiselect({
  1189. checkboxName: function(option) {
  1190. return 'multiselect[]';
  1191. }
  1192. });
  1193. });
  1194. &lt;/script&gt;
  1195. </pre>
  1196. </div>
  1197. </td>
  1198. </tr>
  1199. <tr>
  1200. <td><code id="configuration-options-onChange">onChange</code></td>
  1201. <td>
  1202. <p>
  1203. A function which is triggered on the change event of the options. Note that the event is not triggered when selecting or deselecting options using the <code>select</code> and <code>deselect</code> methods provided by the plugin.
  1204. </p>
  1205. <p class="alert alert-warning">
  1206. Note that the behavior of <code>onChange</code> changes when setting <code>enableClickableOptGroups</code> to <code>true</code>.
  1207. </p>
  1208. <div class="example">
  1209. <script type="text/javascript">
  1210. $(document).ready(function() {
  1211. $('#example-onChange').multiselect({
  1212. onChange: function(option, checked, select) {
  1213. alert('Changed option ' + $(option).val() + '.');
  1214. }
  1215. });
  1216. });
  1217. </script>
  1218. <select id="example-onChange" multiple="multiple">
  1219. <option value="1">Option 1</option>
  1220. <option value="2">Option 2</option>
  1221. <option value="3">Option 3</option>
  1222. <option value="4">Option 4</option>
  1223. <option value="5">Option 5</option>
  1224. <option value="6">Option 6</option>
  1225. </select>
  1226. </div>
  1227. <div class="highlight">
  1228. <pre class="prettyprint linenums">
  1229. &lt;script type=&quot;text/javascript&quot;&gt;
  1230. $(document).ready(function() {
  1231. $('#example-onChange').multiselect({
  1232. onChange: function(option, checked, select) {
  1233. alert('Changed option ' + $(option).val() + '.');
  1234. }
  1235. });
  1236. });
  1237. &lt;/script&gt;
  1238. </pre>
  1239. </div>
  1240. </td>
  1241. </tr>
  1242. <tr>
  1243. <td><code id="configuration-options-onInitialized">onInitialized</code></td>
  1244. <td>
  1245. <p>
  1246. A function which is triggered when the multiselect is finished initializing.
  1247. </p>
  1248. <div class="example">
  1249. <script type="text/javascript">
  1250. $(document).ready(function() {
  1251. $('#example-onInitialized-button').on('click', function() {
  1252. $('#example-onInitialized').multiselect({
  1253. onInitialized: function(select, container) {
  1254. alert('Initialized.');
  1255. }
  1256. });
  1257. });
  1258. });
  1259. </script>
  1260. <div class="btn-group">
  1261. <select id="example-onInitialized" multiple="multiple">
  1262. <option value="1">Option 1</option>
  1263. <option value="2">Option 2</option>
  1264. <option value="3">Option 3</option>
  1265. <option value="4">Option 4</option>
  1266. <option value="5">Option 5</option>
  1267. <option value="6">Option 6</option>
  1268. </select>
  1269. <button id="example-onInitialized-button" class="btn btn-primary">Activate!</button>
  1270. </div>
  1271. </div>
  1272. <div class="highlight">
  1273. <pre class="prettyprint linenums">
  1274. &lt;script type=&quot;text/javascript&quot;&gt;
  1275. $(document).ready(function() {
  1276. $('#example-onInitialized-button').on('click', function() {
  1277. $('#example-onInitialized').multiselect({
  1278. onInitialized: function(select, container) {
  1279. alert('Initialized.');
  1280. }
  1281. });
  1282. });
  1283. });
  1284. &lt;/script&gt;
  1285. &lt;div class=&quot;btn-group&quot;&gt;
  1286. &lt;select id=&quot;example-onInitialized&quot; multiple=&quot;multiple&quot;&gt;
  1287. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  1288. &lt;option value=&quot;2&quot;&gt;Option 2&lt;/option&gt;
  1289. &lt;option value=&quot;3&quot;&gt;Option 3&lt;/option&gt;
  1290. &lt;option value=&quot;4&quot;&gt;Option 4&lt;/option&gt;
  1291. &lt;option value=&quot;5&quot;&gt;Option 5&lt;/option&gt;
  1292. &lt;option value=&quot;6&quot;&gt;Option 6&lt;/option&gt;
  1293. &lt;/select&gt;
  1294. &lt;button id=&quot;example-onInitialized-button&quot; class=&quot;btn btn-primary&quot;&gt;Activate!&lt;/button&gt;
  1295. &lt;/div&gt;
  1296. </pre>
  1297. </div>
  1298. </td>
  1299. </tr>
  1300. <tr>
  1301. <td><code id="configuration-options-onDropdownShow">onDropdownShow</code></td>
  1302. <td>
  1303. <p>
  1304. A callback called when the dropdown is shown.
  1305. </p>
  1306. <p class="alert alert-warning">
  1307. The <code>onDropdownShow</code> option is not available when using Twitter Bootstrap 2.3.
  1308. </p>
  1309. <div class="example">
  1310. <script type="text/javascript">
  1311. $(document).ready(function() {
  1312. $('#example-onDropdownShow').multiselect({
  1313. onDropdownShow: function(event) {
  1314. alert('Dropdown shown.');
  1315. }
  1316. });
  1317. });
  1318. </script>
  1319. <select id="example-onDropdownShow" multiple="multiple">
  1320. <option value="1">Option 1</option>
  1321. <option value="2">Option 2</option>
  1322. <option value="3">Option 3</option>
  1323. <option value="4">Option 4</option>
  1324. <option value="5">Option 5</option>
  1325. <option value="6">Option 6</option>
  1326. </select>
  1327. </div>
  1328. <div class="highlight">
  1329. <pre class="prettyprint linenums">
  1330. &lt;script type=&quot;text/javascript&quot;&gt;
  1331. $(document).ready(function() {
  1332. $('#example-onDropdownShow').multiselect({
  1333. onDropdownShow: function(event) {
  1334. alert('Dropdown shown.');
  1335. }
  1336. });
  1337. });
  1338. &lt;/script&gt;
  1339. </pre>
  1340. </div>
  1341. </td>
  1342. </tr>
  1343. <tr>
  1344. <td><code id="configuration-options-onDropdownHide">onDropdownHide</code></td>
  1345. <td>
  1346. <p>
  1347. A callback called when the dropdown is closed.
  1348. </p>
  1349. <p class="alert alert-warning">
  1350. The <code>onDropdownHide</code> option is not available when using Twitter Bootstrap 2.3.
  1351. </p>
  1352. <div class="example">
  1353. <script type="text/javascript">
  1354. $(document).ready(function() {
  1355. $('#example-onDropdownHide').multiselect({
  1356. onDropdownHide: function(event) {
  1357. alert('Dropdown closed.');
  1358. }
  1359. });
  1360. });
  1361. </script>
  1362. <select id="example-onDropdownHide" multiple="multiple">
  1363. <option value="1">Option 1</option>
  1364. <option value="2">Option 2</option>
  1365. <option value="3">Option 3</option>
  1366. <option value="4">Option 4</option>
  1367. <option value="5">Option 5</option>
  1368. <option value="6">Option 6</option>
  1369. </select>
  1370. </div>
  1371. <div class="highlight">
  1372. <pre class="prettyprint linenums">
  1373. &lt;script type=&quot;text/javascript&quot;&gt;
  1374. $(document).ready(function() {
  1375. $('#example-onDropdownHide').multiselect({
  1376. onDropdownHide: function(event) {
  1377. alert('Dropdown closed.');
  1378. }
  1379. });
  1380. });
  1381. &lt;/script&gt;
  1382. </pre>
  1383. </div>
  1384. </td>
  1385. </tr>
  1386. <tr>
  1387. <td><code id="configuration-options-onDropdownShown">onDropdownShown</code></td>
  1388. <td>
  1389. <p>
  1390. A callback called <i>after</i> the dropdown has been shown.
  1391. </p>
  1392. <p class="alert alert-warning">
  1393. The <code>onDropdownShown</code> option is not available when using Twitter Bootstrap 2.3.
  1394. </p>
  1395. <div class="example">
  1396. <script type="text/javascript">
  1397. $(document).ready(function() {
  1398. $('#example-onDropdownShown').multiselect({
  1399. onDropdownShown: function(event) {
  1400. alert('Dropdown shown.');
  1401. }
  1402. });
  1403. });
  1404. </script>
  1405. <select id="example-onDropdownShown" multiple="multiple">
  1406. <option value="1">Option 1</option>
  1407. <option value="2">Option 2</option>
  1408. <option value="3">Option 3</option>
  1409. <option value="4">Option 4</option>
  1410. <option value="5">Option 5</option>
  1411. <option value="6">Option 6</option>
  1412. </select>
  1413. </div>
  1414. <div class="highlight">
  1415. <pre class="prettyprint linenums">
  1416. &lt;script type=&quot;text/javascript&quot;&gt;
  1417. $(document).ready(function() {
  1418. $('#example-onDropdownShown').multiselect({
  1419. onDropdownShown: function(event) {
  1420. alert('Dropdown closed.');
  1421. }
  1422. });
  1423. });
  1424. &lt;/script&gt;
  1425. </pre>
  1426. </div>
  1427. </td>
  1428. </tr>
  1429. <tr>
  1430. <td><code id="configuration-options-onDropdownHidden">onDropdownHidden</code></td>
  1431. <td>
  1432. <p>
  1433. A callback called <i>after</i> the dropdown has been closed.
  1434. </p>
  1435. <p class="alert alert-warning">
  1436. The <code>onDropdownHidden</code> option is not available when using Twitter Bootstrap 2.3.
  1437. </p>
  1438. <div class="example">
  1439. <script type="text/javascript">
  1440. $(document).ready(function() {
  1441. $('#example-onDropdownHidden').multiselect({
  1442. onDropdownHidden: function(event) {
  1443. alert('Dropdown closed.');
  1444. }
  1445. });
  1446. });
  1447. </script>
  1448. <select id="example-onDropdownHidden" multiple="multiple">
  1449. <option value="1">Option 1</option>
  1450. <option value="2">Option 2</option>
  1451. <option value="3">Option 3</option>
  1452. <option value="4">Option 4</option>
  1453. <option value="5">Option 5</option>
  1454. <option value="6">Option 6</option>
  1455. </select>
  1456. </div>
  1457. <div class="highlight">
  1458. <pre class="prettyprint linenums">
  1459. &lt;script type=&quot;text/javascript&quot;&gt;
  1460. $(document).ready(function() {
  1461. $('#example-ondropdownHidden').multiselect({
  1462. onDropdownHidden: function(event) {
  1463. alert('Dropdown closed.');
  1464. }
  1465. });
  1466. });
  1467. &lt;/script&gt;
  1468. </pre>
  1469. </div>
  1470. </td>
  1471. </tr>
  1472. <tr>
  1473. <td><code id="configuration-options-buttonClass">buttonClass</code></td>
  1474. <td>
  1475. <p>
  1476. The class of the multiselect button.
  1477. </p>
  1478. <div class="example">
  1479. <script type="text/javascript">
  1480. $(document).ready(function() {
  1481. $('#example-buttonClass').multiselect({
  1482. buttonClass: 'btn btn-link'
  1483. });
  1484. });
  1485. </script>
  1486. <select id="example-buttonClass" multiple="multiple">
  1487. <option value="1">Option 1</option>
  1488. <option value="2">Option 2</option>
  1489. <option value="3">Option 3</option>
  1490. <option value="4">Option 4</option>
  1491. <option value="5">Option 5</option>
  1492. <option value="6">Option 6</option>
  1493. </select>
  1494. </div>
  1495. <div class="highlight">
  1496. <pre class="prettyprint linenums">
  1497. &lt;script type=&quot;text/javascript&quot;&gt;
  1498. $(document).ready(function() {
  1499. $('#example-buttonClass').multiselect({
  1500. buttonClass: 'btn btn-link'
  1501. });
  1502. });
  1503. &lt;/script&gt;
  1504. </pre>
  1505. </div>
  1506. </td>
  1507. </tr>
  1508. <tr>
  1509. <td><code id="configuration-options-inheritClass">inheritClass</code></td>
  1510. <td>
  1511. <p>
  1512. Inherit the class of the button from the original select.
  1513. </p>
  1514. <div class="example">
  1515. <script type="text/javascript">
  1516. $(document).ready(function() {
  1517. $('#example-inheritButton').multiselect({
  1518. inheritClass: true
  1519. });
  1520. });
  1521. </script>
  1522. <select id="example-inheritButton" class="btn-primary" multiple="multiple">
  1523. <option value="1">Option 1</option>
  1524. <option value="2">Option 2</option>
  1525. <option value="3">Option 3</option>
  1526. <option value="4">Option 4</option>
  1527. <option value="5">Option 5</option>
  1528. <option value="6">Option 6</option>
  1529. </select>
  1530. </div>
  1531. <div class="highlight">
  1532. <pre class="prettyprint linenums">
  1533. &lt;script type=&quot;text/javascript&quot;&gt;
  1534. $(document).ready(function() {
  1535. $('#example-inheritButton').multiselect({
  1536. inheritClass: true
  1537. });
  1538. });
  1539. &lt;/script&gt;
  1540. </pre>
  1541. </div>
  1542. </td>
  1543. </tr>
  1544. <tr>
  1545. <td><code id="configuration-options-buttonContainer">buttonContainer</code></td>
  1546. <td>
  1547. <p>
  1548. The container holding both the button as well as the dropdown.
  1549. </p>
  1550. <div class="example">
  1551. <script type="text/javascript">
  1552. $(document).ready(function() {
  1553. $('#example-buttonContainer').multiselect({
  1554. buttonContainer: '<div class="btn-group" />'
  1555. });
  1556. });
  1557. </script>
  1558. <select id="example-buttonContainer" multiple="multiple">
  1559. <option value="1">Option 1</option>
  1560. <option value="2">Option 2</option>
  1561. <option value="3">Option 3</option>
  1562. <option value="4">Option 4</option>
  1563. <option value="5">Option 5</option>
  1564. <option value="6">Option 6</option>
  1565. </select>
  1566. </div>
  1567. <div class="highlight">
  1568. <pre class="prettyprint linenums">
  1569. &lt;script type=&quot;text/javascript&quot;&gt;
  1570. $(document).ready(function() {
  1571. $('#example-buttonContainer').multiselect({
  1572. buttonContainer: '&lt;div class=&quot;btn-group&quot; /&gt;'
  1573. });
  1574. });
  1575. &lt;/script&gt;
  1576. </pre>
  1577. </div>
  1578. </td>
  1579. </tr>
  1580. <tr>
  1581. <td><code id="configuration-options-buttonWidth">buttonWidth</code></td>
  1582. <td>
  1583. <p>
  1584. The width of the multiselect button may be fixed using this option.
  1585. </p>
  1586. <p class="alert alert-info">
  1587. Actually, <code>buttonWidth</code> describes the width of the <code>.btn-group</code> container and the width of the <code>button</code> is set to <code>100%</code>.
  1588. </p>
  1589. <div class="example">
  1590. <script type="text/javascript">
  1591. $(document).ready(function() {
  1592. $('#example-buttonWidth').multiselect({
  1593. buttonWidth: '400px'
  1594. });
  1595. });
  1596. </script>
  1597. <select id="example-buttonWidth" multiple="multiple">
  1598. <option value="1">Option 1</option>
  1599. <option value="2">Option 2</option>
  1600. <option value="3">Option 3</option>
  1601. <option value="4">Option 4</option>
  1602. <option value="5">Option 5</option>
  1603. <option value="6">Option 6</option>
  1604. </select>
  1605. </div>
  1606. <div class="highlight">
  1607. <pre class="prettyprint linenums">
  1608. &lt;script type=&quot;text/javascript&quot;&gt;
  1609. $(document).ready(function() {
  1610. $('#example-buttonWidth').multiselect({
  1611. buttonWidth: '400px'
  1612. });
  1613. });
  1614. &lt;/script&gt;
  1615. </pre>
  1616. </div>
  1617. <p>Note that if the text in the button title is too long, it will be truncated and use an ellipsis</p>
  1618. <div class="example">
  1619. <script type="text/javascript">
  1620. $(document).ready(function() {
  1621. $('#example-buttonWidth-overflow').multiselect({
  1622. buttonWidth: '150px'
  1623. });
  1624. });
  1625. </script>
  1626. <select id="example-buttonWidth-overflow" multiple="multiple">
  1627. <option value="1" selected>Option 1</option>
  1628. <option value="2" selected>Option 2</option>
  1629. <option value="3" selected>Option 3</option>
  1630. <option value="4">Option 4</option>
  1631. <option value="5">Option 5</option>
  1632. <option value="6">Option 6</option>
  1633. </select>
  1634. </div>
  1635. <div class="highlight">
  1636. <pre class="prettyprint linenums">
  1637. &lt;script type=&quot;text/javascript&quot;&gt;
  1638. $(document).ready(function() {
  1639. $('#example-buttonWidth-overflow').multiselect({
  1640. buttonWidth: '150px'
  1641. });
  1642. });
  1643. &lt;/script&gt;
  1644. </pre>
  1645. </div>
  1646. <p>
  1647. This does also work for long options:
  1648. </p>
  1649. <div class="example">
  1650. <script type="text/javascript">
  1651. $(document).ready(function() {
  1652. $('#example-buttonWidth-overflow-option').multiselect({
  1653. buttonWidth: '150px'
  1654. });
  1655. });
  1656. </script>
  1657. <select id="example-buttonWidth-overflow-option" multiple="multiple">
  1658. <option value="1" selected>Long Long Long Option 1</option>
  1659. <option value="2">Very Very Long Option 2</option>
  1660. <option value="3">Even Longer Option 3</option>
  1661. <option value="4">Ridiculous Long Option 4</option>
  1662. </select>
  1663. </div>
  1664. <div class="highlight">
  1665. <pre class="prettyprint linenums">
  1666. &lt;script type=&quot;text/javascript&quot;&gt;
  1667. $(document).ready(function() {
  1668. $('#example-buttonWidth-overflow').multiselect({
  1669. buttonWidth: '150px'
  1670. });
  1671. });
  1672. &lt;/script&gt;
  1673. </pre>
  1674. </div>
  1675. </td>
  1676. </tr>
  1677. <tr>
  1678. <td><code id="configuration-options-buttonText">buttonText</code></td>
  1679. <td>
  1680. <p>
  1681. A callback specifying the text shown on the button dependent on the currently selected options.
  1682. </p>
  1683. <p>
  1684. The callback gets the currently selected <code>options</code> and the <code>select</code> as argument and returns the string shown as button text. The default <code>buttonText</code> callback returns <code>nonSelectedText</code> in the case no option is selected, <code>nSelectedText</code> in the case more than <code>numberDisplayed</code> options are selected and the names of the selected options if less than <code>numberDisplayed</code> options are selected.
  1685. </p>
  1686. <div class="example">
  1687. <script type="text/javascript">
  1688. $(document).ready(function() {
  1689. $('#example-buttonText').multiselect({
  1690. buttonText: function(options, select) {
  1691. if (options.length === 0) {
  1692. return 'No option selected ...';
  1693. }
  1694. else if (options.length > 3) {
  1695. return 'More than 3 options selected!';
  1696. }
  1697. else {
  1698. var labels = [];
  1699. options.each(function() {
  1700. if ($(this).attr('label') !== undefined) {
  1701. labels.push($(this).attr('label'));
  1702. }
  1703. else {
  1704. labels.push($(this).html());
  1705. }
  1706. });
  1707. return labels.join(', ');
  1708. }
  1709. }
  1710. });
  1711. });
  1712. </script>
  1713. <select id="example-buttonText" multiple="multiple">
  1714. <option value="1">Option 1</option>
  1715. <option value="2">Option 2</option>
  1716. <option value="3">Option 3</option>
  1717. <option value="4">Option 4</option>
  1718. <option value="5">Option 5</option>
  1719. <option value="6">Option 6</option>
  1720. </select>
  1721. </div>
  1722. <div class="highlight">
  1723. <pre class="prettyprint linenums">
  1724. &lt;script type=&quot;text/javascript&quot;&gt;
  1725. $(document).ready(function() {
  1726. $('#example-buttonText').multiselect({
  1727. buttonText: function(options, select) {
  1728. if (options.length === 0) {
  1729. return 'No option selected ...';
  1730. }
  1731. else if (options.length > 3) {
  1732. return 'More than 3 options selected!';
  1733. }
  1734. else {
  1735. var labels = [];
  1736. options.each(function() {
  1737. if ($(this).attr('label') !== undefined) {
  1738. labels.push($(this).attr('label'));
  1739. }
  1740. else {
  1741. labels.push($(this).html());
  1742. }
  1743. });
  1744. return labels.join(', ') + '';
  1745. }
  1746. }
  1747. });
  1748. });
  1749. &lt;/script&gt;
  1750. </pre>
  1751. </div>
  1752. </td>
  1753. </tr>
  1754. <tr>
  1755. <td><code id="configuration-options-buttonTitle">buttonTitle</code></td>
  1756. <td>
  1757. <p>
  1758. A callback specifying the title of the button.
  1759. </p>
  1760. <p>
  1761. The callback gets the currently selected <code>options</code> and the <code>select</code> as argument and returns the title of the button as string. The default <code>buttonTitle</code> callback returns <code>nonSelectedText</code> in the case no option is selected and the names of the selected options of less than <code>numberDisplayed</code> options are selected. If more than <code>numberDisplayed</code> options are selected, <code>nSelectedText</code> is returned.
  1762. </p>
  1763. <div class="example">
  1764. <script type="text/javascript">
  1765. $(document).ready(function() {
  1766. $('#example-buttonTitle').multiselect({
  1767. buttonText: function(options, select) {
  1768. return 'Check the title!';
  1769. },
  1770. buttonTitle: function(options, select) {
  1771. var labels = [];
  1772. options.each(function () {
  1773. labels.push($(this).text());
  1774. });
  1775. return labels.join(' - ');
  1776. }
  1777. });
  1778. });
  1779. </script>
  1780. <select id="example-buttonTitle" multiple="multiple">
  1781. <option value="1">Option 1</option>
  1782. <option value="2">Option 2</option>
  1783. <option value="3">Option 3</option>
  1784. <option value="4">Option 4</option>
  1785. <option value="5">Option 5</option>
  1786. <option value="6">Option 6</option>
  1787. </select>
  1788. </div>
  1789. <div class="highlight">
  1790. <pre class="prettyprint linenums">
  1791. &lt;script type=&quot;text/javascript&quot;&gt;
  1792. $(document).ready(function() {
  1793. $('#example-buttonTitle').multiselect({
  1794. buttonText: function(options, select) {
  1795. return 'Check the title!';
  1796. },
  1797. buttonTitle: function(options, select) {
  1798. var labels = [];
  1799. options.each(function () {
  1800. labels.push($(this).text());
  1801. });
  1802. return labels.join(' - ');
  1803. }
  1804. });
  1805. });
  1806. &lt;/script&gt;
  1807. </pre>
  1808. </div>
  1809. </td>
  1810. </tr>
  1811. <tr>
  1812. <td><code id="configuration-options-nonSelectedText">nonSelectedText</code></td>
  1813. <td>
  1814. <p>
  1815. The text displayed when no option is selected. This option is used in the default <code>buttonText</code> and <code>buttonTitle</code> functions.
  1816. </p>
  1817. <div class="example">
  1818. <script type="text/javascript">
  1819. $(document).ready(function() {
  1820. $('#example-nonSelectedText').multiselect({
  1821. nonSelectedText: 'Check an option!'
  1822. });
  1823. });
  1824. </script>
  1825. <select id="example-nonSelectedText" multiple="multiple">
  1826. <option value="1">Option 1</option>
  1827. <option value="2">Option 2</option>
  1828. <option value="3">Option 3</option>
  1829. <option value="4">Option 4</option>
  1830. <option value="5">Option 5</option>
  1831. <option value="6">Option 6</option>
  1832. </select>
  1833. </div>
  1834. <div class="highlight">
  1835. <pre class="prettyprint linenums">
  1836. &lt;script type=&quot;text/javascript&quot;&gt;
  1837. $(document).ready(function() {
  1838. $('#example-nonSelectedText').multiselect({
  1839. nonSelectedText: 'Check an option!'
  1840. });
  1841. });
  1842. &lt;/script&gt;
  1843. </pre>
  1844. </div>
  1845. </td>
  1846. </tr>
  1847. <tr>
  1848. <td><code id="configuration-options-nSelectedText">nSelectedText</code></td>
  1849. <td>
  1850. <p>
  1851. The text displayed if more than <code>numberDisplayed</code> options are selected. This option is used by the default <code>buttonText</code> and <code>buttonTitle</code> callbacks.
  1852. </p>
  1853. <div class="example">
  1854. <script type="text/javascript">
  1855. $(document).ready(function() {
  1856. $('#example-nSelectedText').multiselect({
  1857. nSelectedText: ' - Too many options selected!'
  1858. });
  1859. });
  1860. </script>
  1861. <select id="example-nSelectedText" multiple="multiple">
  1862. <option value="1">Option 1</option>
  1863. <option value="2">Option 2</option>
  1864. <option value="3">Option 3</option>
  1865. <option value="4">Option 4</option>
  1866. <option value="5">Option 5</option>
  1867. <option value="6">Option 6</option>
  1868. </select>
  1869. </div>
  1870. <div class="highlight">
  1871. <pre class="prettyprint linenums">
  1872. &lt;script type=&quot;text/javascript&quot;&gt;
  1873. $(document).ready(function() {
  1874. $('#example-nSelectedText').multiselect({
  1875. nSelectedText: ' - Too many options selected!'
  1876. });
  1877. });
  1878. &lt;/script&gt;
  1879. </pre>
  1880. </div>
  1881. </td>
  1882. </tr>
  1883. <tr>
  1884. <td><code id="configuration-options-allSelectedText">allSelectedText</code></td>
  1885. <td>
  1886. <p>
  1887. <code>allSelectedText</code> is the text displayed if all options are selected. You can disable displaying the <code>allSelectedText</code> by setting it to false.
  1888. </p>
  1889. <div class="example">
  1890. <script type="text/javascript">
  1891. $(document).ready(function() {
  1892. $('#example-allSelectedText').multiselect({
  1893. allSelectedText: 'No option left ...'
  1894. });
  1895. });
  1896. </script>
  1897. <select id="example-allSelectedText" multiple="multiple">
  1898. <option value="1">Option 1</option>
  1899. <option value="2">Option 2</option>
  1900. <option value="3">Option 3</option>
  1901. <option value="4">Option 4</option>
  1902. <option value="5">Option 5</option>
  1903. <option value="6">Option 6</option>
  1904. </select>
  1905. </div>
  1906. <div class="highlight">
  1907. <pre class="prettyprint linenums">
  1908. &lt;script type=&quot;text/javascript&quot;&gt;
  1909. $(document).ready(function() {
  1910. $('#example-allSelectedText').multiselect({
  1911. allSelectedText: 'No option left ...'
  1912. });
  1913. });
  1914. &lt;/script&gt;
  1915. </pre>
  1916. </div>
  1917. <p>
  1918. This option may be useful in combination with the <code>includeSelectAllOption</code>:
  1919. </p>
  1920. <div class="example">
  1921. <script type="text/javascript">
  1922. $(document).ready(function() {
  1923. $('#example-allSelectedText-includeSelectAllOption').multiselect({
  1924. includeSelectAllOption: true,
  1925. allSelectedText: 'No option left ...'
  1926. });
  1927. });
  1928. </script>
  1929. <select id="example-allSelectedText-includeSelectAllOption" multiple="multiple">
  1930. <option value="1">Option 1</option>
  1931. <option value="2">Option 2</option>
  1932. <option value="3">Option 3</option>
  1933. <option value="4">Option 4</option>
  1934. <option value="5">Option 5</option>
  1935. <option value="6">Option 6</option>
  1936. </select>
  1937. </div>
  1938. <div class="highlight">
  1939. <pre class="prettyprint linenums">
  1940. &lt;script type=&quot;text/javascript&quot;&gt;
  1941. $(document).ready(function() {
  1942. $('#example-allSelectedText-includeSelectAllOption').multiselect({
  1943. includeSelectAllOption: true,
  1944. allSelectedText: 'No option left ...'
  1945. });
  1946. });
  1947. &lt;/script&gt;
  1948. </pre>
  1949. </div>
  1950. <p>
  1951. Note that the <code>allSelectedText</code> is not shown if only one option is available.
  1952. </p>
  1953. <div class="example">
  1954. <script type="text/javascript">
  1955. $(document).ready(function() {
  1956. $('#example-allSelectedText-allSelectedText-single').multiselect({
  1957. includeSelectAllOption: true,
  1958. allSelectedText: 'No option left ...'
  1959. });
  1960. });
  1961. </script>
  1962. <select id="example-allSelectedText-allSelectedText-single" multiple="multiple">
  1963. <option value="1">Option 1</option>
  1964. </select>
  1965. </div>
  1966. <div class="highlight">
  1967. <pre class="prettyprint linenums">
  1968. &lt;script type=&quot;text/javascript&quot;&gt;
  1969. $(document).ready(function() {
  1970. $('#example-allSelectedText-allSelectedText-single').multiselect({
  1971. includeSelectAllOption: true,
  1972. allSelectedText: 'No option left ...'
  1973. });
  1974. });
  1975. &lt;/script&gt;
  1976. </pre>
  1977. </div>
  1978. </td>
  1979. </tr>
  1980. <tr>
  1981. <td><code id="configuration-options-numberDisplayed">numberDisplayed</code></td>
  1982. <td>
  1983. <p>
  1984. This option is used by the <code>buttonText</code> and <code>buttonTitle</code> functions to determine if too many options would be displayed.
  1985. </p>
  1986. <p class="alert alert-info">The functionality can be disabled by setting <code>numberDisplayed</code> to <code>0</code>.</p>
  1987. <div class="example">
  1988. <script type="text/javascript">
  1989. $(document).ready(function() {
  1990. $('#example-numberDisplayed').multiselect({
  1991. numberDisplayed: 1
  1992. });
  1993. });
  1994. </script>
  1995. <select id="example-numberDisplayed" multiple="multiple">
  1996. <option value="1">Option 1</option>
  1997. <option value="2">Option 2</option>
  1998. <option value="3">Option 3</option>
  1999. <option value="4">Option 4</option>
  2000. <option value="5">Option 5</option>
  2001. <option value="6">Option 6</option>
  2002. </select>
  2003. </div>
  2004. <div class="highlight">
  2005. <pre class="prettyprint linenums">
  2006. &lt;script type=&quot;text/javascript&quot;&gt;
  2007. $(document).ready(function() {
  2008. $('#example-numberDisplayed').multiselect({
  2009. numberDisplayed: 1
  2010. });
  2011. });
  2012. &lt;/script&gt;
  2013. </pre>
  2014. </div>
  2015. </td>
  2016. </tr>
  2017. <tr>
  2018. <td><code id="configuration-options-delimiterText">delimiterText</code></td>
  2019. <td>
  2020. <p>
  2021. Sets the separator for the list of selected items for mouse-over. Defaults to ', '. Set to '\n' for a neater display.
  2022. </p>
  2023. <div class="example">
  2024. <script type="text/javascript">
  2025. $(document).ready(function() {
  2026. $('#example-delimiterText').multiselect({
  2027. delimiterText: '; '
  2028. });
  2029. });
  2030. </script>
  2031. <select id="example-delimiterText" multiple="multiple">
  2032. <option value="1">Option 1</option>
  2033. <option value="2" selected="selected">Option 2</option>
  2034. <option value="3" selected="selected">Option 3</option>
  2035. <option value="4">Option 4</option>
  2036. <option value="5">Option 5</option>
  2037. <option value="6">Option 6</option>
  2038. </select>
  2039. </div>
  2040. <div class="highlight">
  2041. <pre class="prettyprint linenums">
  2042. &lt;script type=&quot;text/javascript&quot;&gt;
  2043. $(document).ready(function() {
  2044. $('#example-delimiterText').multiselect({
  2045. delimiterText '; '
  2046. });
  2047. });
  2048. &lt;/script&gt;
  2049. </pre>
  2050. </div>
  2051. </td>
  2052. </tr>
  2053. <tr>
  2054. <td><code id="configuration-options-optionLabel">optionLabel</code></td>
  2055. <td>
  2056. <p>
  2057. A callback used to define the labels of the options.
  2058. </p>
  2059. <div class="example">
  2060. <script type="text/javascript">
  2061. $(document).ready(function() {
  2062. $('#example-optionLabel').multiselect({
  2063. optionLabel: function(element) {
  2064. return $(element).html() + ' (' + $(element).val() + ')';
  2065. }
  2066. });
  2067. });
  2068. </script>
  2069. <select id="example-optionLabel" multiple="multiple">
  2070. <option value="option-1">Option 1</option>
  2071. <option value="option-2">Option 2</option>
  2072. <option value="option-3">Option 3</option>
  2073. <option value="option-4">Option 4</option>
  2074. <option value="option-5">Option 5</option>
  2075. <option value="option-6">Option 6</option>
  2076. </select>
  2077. </div>
  2078. <div class="highlight">
  2079. <pre class="prettyprint linenums">
  2080. &lt;script type=&quot;text/javascript&quot;&gt;
  2081. $(document).ready(function() {
  2082. $('#example-optionLabel').multiselect({
  2083. optionLabel: function(element) {
  2084. return $(element).html() + '(' + $(element).val() + ')';
  2085. }
  2086. });
  2087. });
  2088. &lt;/script&gt;
  2089. &lt;select id=&quot;example-label&quot; multiple=&quot;multiple&quot;&gt;
  2090. &lt;option value=&quot;option-1&quot;&gt;Option 1&lt;/option&gt;
  2091. &lt;option value=&quot;option-2&quot;&gt;Option 2&lt;/option&gt;
  2092. &lt;option value=&quot;option-3&quot;&gt;Option 3&lt;/option&gt;
  2093. &lt;option value=&quot;option-4&quot;&gt;Option 4&lt;/option&gt;
  2094. &lt;option value=&quot;option-5&quot;&gt;Option 5&lt;/option&gt;
  2095. &lt;option value=&quot;option-6&quot;&gt;Option 6&lt;/option&gt;
  2096. &lt;/select&gt;
  2097. </pre>
  2098. </div>
  2099. </td>
  2100. </tr>
  2101. <tr>
  2102. <td><code id="configuration-options-optionClass">optionClass</code></td>
  2103. <td>
  2104. <p>
  2105. A callback used to define the classes for the <code>li</code> elements containing checkboxes and labels.
  2106. </p>
  2107. <div class="example">
  2108. <script type="text/javascript">
  2109. $(document).ready(function() {
  2110. $('#example-optionClass').multiselect({
  2111. optionClass: function(element) {
  2112. var value = $(element).val();
  2113. if (value%2 == 0) {
  2114. return 'even';
  2115. }
  2116. else {
  2117. return 'odd';
  2118. }
  2119. }
  2120. });
  2121. });
  2122. </script>
  2123. <style type="text/css">
  2124. #example-optionClass-container .multiselect-container li.odd {
  2125. background: #eeeeee;
  2126. }
  2127. </style>
  2128. <div id="example-optionClass-container">
  2129. <select id="example-optionClass" multiple="multiple">
  2130. <option value="1">Option 1</option>
  2131. <option value="2">Option 2</option>
  2132. <option value="3">Option 3</option>
  2133. <option value="4">Option 4</option>
  2134. <option value="5">Option 5</option>
  2135. <option value="6">Option 6</option>
  2136. </select>
  2137. </div>
  2138. </div>
  2139. <div class="highlight">
  2140. <pre class="prettyprint linenums">
  2141. &lt;script type=&quot;text/javascript&quot;&gt;
  2142. $(document).ready(function() {
  2143. $('#example-optionClass').multiselect({
  2144. optionClass: function(element) {
  2145. var value = $(element).val();
  2146. if (value%2 == 0) {
  2147. return 'even';
  2148. }
  2149. else {
  2150. return 'odd';
  2151. }
  2152. }
  2153. });
  2154. });
  2155. &lt;/script&gt;
  2156. &lt;style type=&quot;text/css&quot;&gt;
  2157. #example-optionClass-container .multiselect-container li.odd {
  2158. background: #eeeeee;
  2159. }
  2160. &lt;/style&gt;
  2161. &lt;div id=&quot;example-optionClass-container&quot;&gt;
  2162. &lt;select id=&quot;example-optionClass&quot; multiple=&quot;multiple&quot;&gt;
  2163. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  2164. &lt;option value=&quot;2&quot;&gt;Option 2&lt;/option&gt;
  2165. &lt;option value=&quot;3&quot;&gt;Option 3&lt;/option&gt;
  2166. &lt;option value=&quot;4&quot;&gt;Option 4&lt;/option&gt;
  2167. &lt;option value=&quot;5&quot;&gt;Option 5&lt;/option&gt;
  2168. &lt;option value=&quot;6&quot;&gt;Option 6&lt;/option&gt;
  2169. &lt;/select&gt;
  2170. &lt;/div&gt;
  2171. </pre>
  2172. </div>
  2173. </td>
  2174. </tr>
  2175. <tr>
  2176. <td><code id="configuration-options-selectedClass">selectedClass</code></td>
  2177. <td>
  2178. <p>
  2179. The class(es) applied on selected options.
  2180. </p>
  2181. <div class="example">
  2182. <style type="text/css">
  2183. #example-selectedClass-container li.multiselect-selected a label {
  2184. color: red;
  2185. }
  2186. </style>
  2187. <script type="text/javascript">
  2188. $(document).ready(function() {
  2189. $('#example-selectedClass').multiselect({
  2190. buttonContainer: '<div class="btn-group" id="example-selectedClass-container"></div>',
  2191. selectedClass: 'active multiselect-selected'
  2192. });
  2193. });
  2194. </script>
  2195. <select id="example-selectedClass" multiple="multiple">
  2196. <option value="1">Option 1</option>
  2197. <option value="2">Option 2</option>
  2198. <option value="3">Option 3</option>
  2199. <option value="4">Option 4</option>
  2200. <option value="5">Option 5</option>
  2201. <option value="6">Option 6</option>
  2202. </select>
  2203. </div>
  2204. <div class="highlight">
  2205. <pre class="prettyprint linenums">
  2206. &lt;style type="text/css"&gt;
  2207. #example-selectedClass-container li.multiselect-selected a label {
  2208. color: red;
  2209. }
  2210. &lt;/style&gt;
  2211. &lt;script type=&quot;text/javascript&quot;&gt;
  2212. $(document).ready(function() {
  2213. $('#example-selectedClass').multiselect({
  2214. buttonContainer: '&lt;div class=&quot;btn-group&quot; id=&quot;example-selectedClass-container&quot;&gt;&lt;/div&gt;',
  2215. selectedClass: 'multiselect-selected'
  2216. });
  2217. });
  2218. &lt;/script&gt;
  2219. </pre>
  2220. </div>
  2221. </td>
  2222. </tr>
  2223. <tr>
  2224. <td>
  2225. <code id="configuration-options-includeSelectAllOption">includeSelectAllOption</code>
  2226. </td>
  2227. <td>
  2228. <p>
  2229. Set to <code>true</code> or <code>false</code> to enable or disable the select all option.
  2230. </p>
  2231. <p class="alert alert-info">
  2232. To see an example using both the select all option and the filter, see the documentation of the <code>enableFiltering</code> option.
  2233. </p>
  2234. <div class="example">
  2235. <script type="text/javascript">
  2236. $(document).ready(function() {
  2237. $('#example-includeSelectAllOption').multiselect({
  2238. includeSelectAllOption: true
  2239. });
  2240. });
  2241. </script>
  2242. <select id="example-includeSelectAllOption" multiple="multiple">
  2243. <option value="1">Option 1</option>
  2244. <option value="2">Option 2</option>
  2245. <option value="3">Option 3</option>
  2246. <option value="4">Option 4</option>
  2247. <option value="5">Option 5</option>
  2248. <option value="6">Option 6</option>
  2249. </select>
  2250. </div>
  2251. <div class="highlight">
  2252. <pre class="prettyprint linenums">
  2253. &lt;script type=&quot;text/javascript&quot;&gt;
  2254. $(document).ready(function() {
  2255. $('#example-includeSelectAllOption').multiselect({
  2256. includeSelectAllOption: true
  2257. });
  2258. });
  2259. &lt;/script&gt;
  2260. </pre>
  2261. </div>
  2262. <p>
  2263. The <code>includeSelectAllOption</code> option can also be used in combination with <code>optgroup</code>'s.
  2264. </p>
  2265. <div class="example">
  2266. <script type="text/javascript">
  2267. $(document).ready(function() {
  2268. $('#example-includeSelectAllOption-optgroups').multiselect({
  2269. includeSelectAllOption: true
  2270. });
  2271. });
  2272. </script>
  2273. <select id="example-includeSelectAllOption-optgroups" multiple="multiple">
  2274. <optgroup label="Group 1">
  2275. <option value="1-1">Option 1.1</option>
  2276. <option value="1-2" selected="selected">Option 1.2</option>
  2277. <option value="1-3" selected="selected">Option 1.3</option>
  2278. </optgroup>
  2279. <optgroup label="Group 2">
  2280. <option value="2-1">Option 2.1</option>
  2281. <option value="2-2">Option 2.2</option>
  2282. <option value="2-3">Option 2.3</option>
  2283. </optgroup>
  2284. </select>
  2285. </div>
  2286. <div class="highlight">
  2287. <pre class="prettyprint linenums">
  2288. &lt;script type=&quot;text/javascript&quot;&gt;
  2289. $(document).ready(function() {
  2290. $('#example-includeSelectAllOption-optgroups').multiselect({
  2291. includeSelectAllOption: true
  2292. });
  2293. });
  2294. &lt;/script&gt;
  2295. </pre>
  2296. </div>
  2297. <p>
  2298. Note that the select all does not trigger the <code>onChange</code> event and only triggers the <code>onSelectAll</code> event:
  2299. </p>
  2300. <div class="example">
  2301. <script type="text/javascript">
  2302. $(document).ready(function() {
  2303. $('#example-includeSelectAllOption-onChange').multiselect({
  2304. includeSelectAllOption: true,
  2305. onChange: function(option, checked) {
  2306. alert('Not triggered when clicking the select all!');
  2307. },
  2308. });
  2309. });
  2310. </script>
  2311. <select id="example-includeSelectAllOption-onChange" multiple="multiple">
  2312. <option value="1">Option 1</option>
  2313. <option value="2">Option 2</option>
  2314. <option value="3">Option 3</option>
  2315. <option value="4">Option 4</option>
  2316. <option value="5">Option 5</option>
  2317. <option value="6">Option 6</option>
  2318. </select>
  2319. </div>
  2320. <div class="highlight">
  2321. <pre class="prettyprint linenums">
  2322. &lt;script type="text/javascript"&gt;
  2323. $(document).ready(function() {
  2324. $('#example-includeSelectAllOption-onChange').multiselect({
  2325. includeSelectAllOption: true,
  2326. onChange: function(option, checked) {
  2327. alert('Not triggered when clicking the select all!');
  2328. },
  2329. });
  2330. });
  2331. &lt;/script&gt;
  2332. </pre>
  2333. </div>
  2334. <p>
  2335. The select all element naturally respects disabled elements:
  2336. </p>
  2337. <div class="example">
  2338. <script type="text/javascript">
  2339. $(document).ready(function() {
  2340. $('#example-includeSelectAllOption-disbled').multiselect({
  2341. includeSelectAllOption: true
  2342. });
  2343. });
  2344. </script>
  2345. <select id="example-includeSelectAllOption-disbled" multiple="multiple">
  2346. <option value="1" disabled="disabled">Option 1</option>
  2347. <option value="2">Option 2</option>
  2348. <option value="3">Option 3</option>
  2349. <option value="4">Option 4</option>
  2350. <option value="5">Option 5</option>
  2351. <option value="6">Option 6</option>
  2352. </select>
  2353. </div>
  2354. <div class="highlight">
  2355. <pre class="prettyprint linenums">
  2356. &lt;script type="text/javascript"&gt;
  2357. $(document).ready(function() {
  2358. $('#example-includeSelectAllOption-disbled').multiselect({
  2359. includeSelectAllOption: true
  2360. });
  2361. });
  2362. &lt;/script&gt;
  2363. </pre>
  2364. </div>
  2365. </td>
  2366. </tr>
  2367. <tr>
  2368. <td>
  2369. <code id="configuration-options-selectAllJustVisible">selectAllJustVisible</code>
  2370. </td>
  2371. <td>
  2372. <p>
  2373. Setting both <code>includeSelectAllOption</code> and <code>enableFiltering</code> to <code>true</code>, the select all option does always select only the visible option. With setting <code>selectAllJustVisible</code> to <code>false</code> this behavior is changed such that always all options (irrespective of whether they are visible) are selected.
  2374. </p>
  2375. <div class="example">
  2376. <script type="text/javascript">
  2377. $(document).ready(function() {
  2378. $('#example-selectAllJustVisible').multiselect({
  2379. enableFiltering: true,
  2380. includeSelectAllOption: true,
  2381. selectAllJustVisible: false
  2382. });
  2383. });
  2384. </script>
  2385. <select id="example-selectAllJustVisible" multiple="multiple">
  2386. <option value="1">Option 1</option>
  2387. <option value="2">Option 2</option>
  2388. <option value="3">Option 3</option>
  2389. <option value="4">Option 4</option>
  2390. <option value="5">Option 5</option>
  2391. <option value="6">Option 6</option>
  2392. </select>
  2393. </div>
  2394. <div class="highlight">
  2395. <pre class="prettyprint linenums">
  2396. &lt;script type=&quot;text/javascript&quot;&gt;
  2397. $(document).ready(function() {
  2398. $('#example-selectAllJustVisible').multiselect({
  2399. enableFiltering: true,
  2400. includeSelectAllOption: true,
  2401. selectAllJustVisible: false
  2402. });
  2403. });
  2404. &lt;/script&gt;
  2405. </pre>
  2406. </div>
  2407. </td>
  2408. </tr>
  2409. <tr>
  2410. <td>
  2411. <code id="configuration-options-selectAllText">selectAllText</code>
  2412. </td>
  2413. <td>
  2414. <p>
  2415. The text displayed for the select all option.
  2416. </p>
  2417. <div class="example">
  2418. <script type="text/javascript">
  2419. $(document).ready(function() {
  2420. $('#example-selectAllText').multiselect({
  2421. includeSelectAllOption: true,
  2422. selectAllText: 'Check all!'
  2423. });
  2424. });
  2425. </script>
  2426. <select id="example-selectAllText" multiple="multiple">
  2427. <option value="1">Option 1</option>
  2428. <option value="2">Option 2</option>
  2429. <option value="3">Option 3</option>
  2430. <option value="4">Option 4</option>
  2431. <option value="5">Option 5</option>
  2432. <option value="6">Option 6</option>
  2433. </select>
  2434. </div>
  2435. <div class="highlight">
  2436. <pre class="prettyprint linenums">
  2437. &lt;script type=&quot;text/javascript&quot;&gt;
  2438. $(document).ready(function() {
  2439. $('#example-selectAllText').multiselect({
  2440. includeSelectAllOption: true,
  2441. selectAllText: 'Check all!'
  2442. });
  2443. });
  2444. &lt;/script&gt;
  2445. </pre>
  2446. </div>
  2447. </td>
  2448. </tr>
  2449. <tr>
  2450. <td>
  2451. <code id="configuration-options-selectAllValue">selectAllValue</code>
  2452. </td>
  2453. <td>
  2454. <p>
  2455. The select all option is added as additional <code>option</code> within the <code>select</code>. To distinguish this option from the original options the value used for the select all option can be configured using the <code>selectAllValue</code> option.
  2456. </p>
  2457. <div class="example">
  2458. <script type="text/javascript">
  2459. $(document).ready(function() {
  2460. $('#example-selectAllValue').multiselect({
  2461. includeSelectAllOption: true,
  2462. selectAllValue: 'select-all-value'
  2463. });
  2464. });
  2465. </script>
  2466. <select id="example-selectAllValue" multiple="multiple">
  2467. <option value="1">Option 1</option>
  2468. <option value="2">Option 2</option>
  2469. <option value="3">Option 3</option>
  2470. <option value="4">Option 4</option>
  2471. <option value="5">Option 5</option>
  2472. <option value="6">Option 6</option>
  2473. </select>
  2474. </div>
  2475. <div class="highlight">
  2476. <pre class="prettyprint linenums">
  2477. &lt;script type=&quot;text/javascript&quot;&gt;
  2478. $(document).ready(function() {
  2479. $('#example-selectAllValue').multiselect({
  2480. includeSelectAllOption: true,
  2481. selectAllValue: 'select-all-value'
  2482. });
  2483. });
  2484. &lt;/script&gt;
  2485. </pre>
  2486. </div>
  2487. <p>The <code>selectAllValue</code> option should usually be a string, however, numeric values work as well:</p>
  2488. <div class="example">
  2489. <script type="text/javascript">
  2490. $(document).ready(function() {
  2491. $('#example-selectAllValue-numeric').multiselect({
  2492. includeSelectAllOption: true,
  2493. selectAllValue: 0
  2494. });
  2495. });
  2496. </script>
  2497. <select id="example-selectAllValue-numeric" multiple="multiple">
  2498. <option value="1">Option 1</option>
  2499. <option value="2">Option 2</option>
  2500. <option value="3">Option 3</option>
  2501. <option value="4">Option 4</option>
  2502. <option value="5">Option 5</option>
  2503. <option value="6">Option 6</option>
  2504. </select>
  2505. </div>
  2506. <div class="highlight">
  2507. <pre class="prettyprint linenums">
  2508. &lt;script type=&quot;text/javascript&quot;&gt;
  2509. $(document).ready(function() {
  2510. $('#example-selectAllValue-numeric').multiselect({
  2511. includeSelectAllOption: true,
  2512. selectAllValue: 0
  2513. });
  2514. });
  2515. &lt;/script&gt;
  2516. </pre>
  2517. </div>
  2518. </td>
  2519. </tr>
  2520. <tr>
  2521. <td>
  2522. <code id="configuration-options-selectAllName">selectAllName</code>
  2523. </td>
  2524. <td>
  2525. <p>
  2526. This option allows to control the name given to the select all option. See <a href="#post">Server-Side Processing</a> for more details.
  2527. </p>
  2528. <div class="example">
  2529. <script type="text/javascript">
  2530. $(document).ready(function() {
  2531. $('#example-selectAllName').multiselect({
  2532. includeSelectAllOption: true,
  2533. selectAllName: 'select-all-name'
  2534. });
  2535. });
  2536. </script>
  2537. <select id="example-selectAllName" multiple="multiple">
  2538. <option value="1">Option 1</option>
  2539. <option value="2">Option 2</option>
  2540. <option value="3">Option 3</option>
  2541. <option value="4">Option 4</option>
  2542. <option value="5">Option 5</option>
  2543. <option value="6">Option 6</option>
  2544. </select>
  2545. </div>
  2546. <div class="highlight">
  2547. <pre class="prettyprint linenums">
  2548. &lt;script type=&quot;text/javascript&quot;&gt;
  2549. $(document).ready(function() {
  2550. $('#example-selectAllName').multiselect({
  2551. includeSelectAllOption: true,
  2552. selectAllName: 'select-all-name'
  2553. });
  2554. });
  2555. &lt;/script&gt;
  2556. </pre>
  2557. </div>
  2558. </td>
  2559. </tr>
  2560. <tr>
  2561. <td>
  2562. <code id="configuration-options-selectAllNumber">selectAllNumber</code>
  2563. </td>
  2564. <td>
  2565. <p>
  2566. If set to <code>true</code> (default), the number of selected options will be shown in parantheses when all options are seleted. The below example shows the behavior of the selectalloption with <code>selectAllNumber</code> set to <code>false</code>:
  2567. </p>
  2568. <div class="example">
  2569. <script type="text/javascript">
  2570. $(document).ready(function() {
  2571. $('#example-selectAllNumber').multiselect({
  2572. includeSelectAllOption: true,
  2573. selectAllNumber: false
  2574. });
  2575. });
  2576. </script>
  2577. <select id="example-selectAllNumber" multiple="multiple">
  2578. <option value="1">Option 1</option>
  2579. <option value="2">Option 2</option>
  2580. <option value="3">Option 3</option>
  2581. <option value="4">Option 4</option>
  2582. <option value="5">Option 5</option>
  2583. <option value="6">Option 6</option>
  2584. </select>
  2585. </div>
  2586. <div class="highlight">
  2587. <pre class="prettyprint linenums">
  2588. &lt;script type=&quot;text/javascript&quot;&gt;
  2589. $(document).ready(function() {
  2590. $('#example-selectAllNumber').multiselect({
  2591. includeSelectAllOption: true,
  2592. selectAllNumber: false
  2593. });
  2594. });
  2595. &lt;/script&gt;
  2596. </pre>
  2597. </div>
  2598. </td>
  2599. </tr>
  2600. <tr>
  2601. <td>
  2602. <code id="configuration-options-onSelectAll">onSelectAll</code>
  2603. </td>
  2604. <td>
  2605. <p>
  2606. This function is triggered when the select all option is used to select all options. Note that this can also be triggered manually using the <code>.multiselect('selectAll')</code> method.
  2607. </p>
  2608. <p class="alert alert-warning">
  2609. Note that the <code>onChange</code> option is not triggered when (de)selecting all options using the select all option.
  2610. </p>
  2611. <p class="alert alert-warning">
  2612. The <code>onSelectAll</code> option is only triggered if the select all option was checked; it is not triggered if all options were checked manually (causing the select all option to be checked as well).
  2613. </p>
  2614. <div class="example">
  2615. <script type="text/javascript">
  2616. $(document).ready(function() {
  2617. $('#example-onSelectAll').multiselect({
  2618. includeSelectAllOption: true,
  2619. onSelectAll: function() {
  2620. alert('onSelectAll triggered!');
  2621. }
  2622. });
  2623. });
  2624. </script>
  2625. <select id="example-onSelectAll" multiple="multiple">
  2626. <option value="1">Option 1</option>
  2627. <option value="2">Option 2</option>
  2628. <option value="3">Option 3</option>
  2629. <option value="4">Option 4</option>
  2630. <option value="5">Option 5</option>
  2631. <option value="6">Option 6</option>
  2632. </select>
  2633. </div>
  2634. <div class="highlight">
  2635. <pre class="prettyprint linenums">
  2636. &lt;script type=&quot;text/javascript&quot;&gt;
  2637. $('#example-onSelectAll').multiselect({
  2638. includeSelectAllOption: true,
  2639. onSelectAll: function() {
  2640. alert('onSelectAll triggered!');
  2641. }
  2642. });
  2643. &lt;/script&gt;
  2644. </pre>
  2645. </div>
  2646. </td>
  2647. </tr>
  2648. <tr>
  2649. <td>
  2650. <code id="configuration-options-onDeselectAll">onDeselectAll</code>
  2651. </td>
  2652. <td>
  2653. <p>
  2654. This function is triggered when the select all option is used to <b>de</b>select all options. Note that this can also be triggered manually using the <code>.multiselect('deselectAll')</code> method.
  2655. </p>
  2656. <p class="alert alert-warning">
  2657. Note that the <code>onChange</code> option is not triggered when (de)selecting all options using the select all option.
  2658. </p>
  2659. <p class="alert alert-warning">
  2660. The <code>onDeselectAll</code> option is only triggered if the select all option was unchecked; it is not triggered if all options were unchecked manually (causing the select all option to be unchecked as well).
  2661. </p>
  2662. <div class="example">
  2663. <script type="text/javascript">
  2664. $(document).ready(function() {
  2665. $('#example-onDeselectAll').multiselect({
  2666. includeSelectAllOption: true,
  2667. onDeselectAll: function() {
  2668. alert('onDeselectAll triggered!');
  2669. }
  2670. });
  2671. });
  2672. </script>
  2673. <select id="example-onDeselectAll" multiple="multiple">
  2674. <option value="1">Option 1</option>
  2675. <option value="2">Option 2</option>
  2676. <option value="3">Option 3</option>
  2677. <option value="4">Option 4</option>
  2678. <option value="5">Option 5</option>
  2679. <option value="6">Option 6</option>
  2680. </select>
  2681. </div>
  2682. <div class="highlight">
  2683. <pre class="prettyprint linenums">
  2684. &lt;script type=&quot;text/javascript&quot;&gt;
  2685. $(document).ready(function() {
  2686. $('#example-onDeselectAll').multiselect({
  2687. includeSelectAllOption: true,
  2688. onDeselectAll: function() {
  2689. alert('onDeselectAll triggered!');
  2690. }
  2691. });
  2692. });
  2693. &lt;/script&gt;
  2694. </pre>
  2695. </div>
  2696. </td>
  2697. </tr>
  2698. <tr>
  2699. <td>
  2700. <code id="configuration-options-enableFiltering">enableFiltering</code>
  2701. </td>
  2702. <td>
  2703. <p>
  2704. Set to <code>true</code> or <code>false</code> to enable or disable the filter. A filter <code>input</code> will be added to dynamically filter all options.
  2705. </p>
  2706. <div class="example">
  2707. <script type="text/javascript">
  2708. $(document).ready(function() {
  2709. $('#example-enableFiltering').multiselect({
  2710. enableFiltering: true
  2711. });
  2712. });
  2713. </script>
  2714. <select id="example-enableFiltering" multiple="multiple">
  2715. <option value="1">Option 1</option>
  2716. <option value="2">Option 2</option>
  2717. <option value="3">Option 3</option>
  2718. <option value="4">Option 4</option>
  2719. <option value="5">Option 5</option>
  2720. <option value="6">Option 6</option>
  2721. <option value="7">Option 7</option>
  2722. <option value="8">Option 8</option>
  2723. <option value="9">Option 9</option>
  2724. <option value="10">Option 10</option>
  2725. <option value="11">Option 11</option>
  2726. <option value="12">Option 12</option>
  2727. <option value="13">Option 13</option>
  2728. <option value="14">Option 14</option>
  2729. <option value="15">Option 15</option>
  2730. </select>
  2731. </div>
  2732. <div class="highlight">
  2733. <pre class="prettyprint linenums">
  2734. &lt;script type=&quot;text/javascript&quot;&gt;
  2735. $(document).ready(function() {
  2736. $('#example-enableFiltering').multiselect({
  2737. enableFiltering: true
  2738. });
  2739. });
  2740. &lt;/script&gt;
  2741. </pre>
  2742. </div>
  2743. <p>
  2744. The <code>enableFiltering</code> option can easily be used in combination with the <code>includeSelectAllOption</code> option:
  2745. </p>
  2746. <div class="example">
  2747. <script type="text/javascript">
  2748. $(document).ready(function() {
  2749. $('#example-enableFiltering-includeSelectAllOption').multiselect({
  2750. includeSelectAllOption: true,
  2751. enableFiltering: true
  2752. });
  2753. });
  2754. </script>
  2755. <select id="example-enableFiltering-includeSelectAllOption" multiple="multiple">
  2756. <option value="1">Option 1</option>
  2757. <option value="2">Option 2</option>
  2758. <option value="3">Option 3</option>
  2759. <option value="4">Option 4</option>
  2760. <option value="5">Option 5</option>
  2761. <option value="6">Option 6</option>
  2762. <option value="7">Option 7</option>
  2763. <option value="8">Option 8</option>
  2764. <option value="9">Option 9</option>
  2765. <option value="10">Option 10</option>
  2766. <option value="11">Option 11</option>
  2767. <option value="12">Option 12</option>
  2768. <option value="13">Option 13</option>
  2769. <option value="14">Option 14</option>
  2770. <option value="15">Option 15</option>
  2771. </select>
  2772. </div>
  2773. <div class="highlight">
  2774. <pre class="prettyprint linenums">
  2775. &lt;script type=&quot;text/javascript&quot;&gt;
  2776. $(document).ready(function() {
  2777. $('#example-enableFiltering-includeSelectAllOption').multiselect({
  2778. includeSelectAllOption: true,
  2779. enableFiltering: true
  2780. });
  2781. });
  2782. &lt;/script&gt;
  2783. </pre>
  2784. </div>
  2785. <p>
  2786. The <code>enableFiltering</code> option can also be used in combination with <code>optgroup</code>'s.
  2787. </p>
  2788. <div class="example">
  2789. <script type="text/javascript">
  2790. $(document).ready(function() {
  2791. $('#example-enableFiltering-optgroups').multiselect({
  2792. enableFiltering: true
  2793. });
  2794. });
  2795. </script>
  2796. <select id="example-enableFiltering-optgroups" multiple="multiple">
  2797. <optgroup label="Group 1">
  2798. <option value="1-1">Option 1.1</option>
  2799. <option value="1-2" selected="selected">Option 1.2</option>
  2800. <option value="1-3" selected="selected">Option 1.3</option>
  2801. </optgroup>
  2802. <optgroup label="Group 2">
  2803. <option value="2-1">Option 2.1</option>
  2804. <option value="2-2">Option 2.2</option>
  2805. <option value="2-3">Option 2.3</option>
  2806. </optgroup>
  2807. </select>
  2808. </div>
  2809. <div class="highlight">
  2810. <pre class="prettyprint linenums">
  2811. &lt;script type=&quot;text/javascript&quot;&gt;
  2812. $(document).ready(function() {
  2813. $('#example-example-enableFiltering-optgroups').multiselect({
  2814. enableFiltering: true
  2815. });
  2816. });
  2817. &lt;/script&gt;
  2818. </pre>
  2819. </div>
  2820. <p>
  2821. Clickable <code>optgroup</code>'s are also supported:
  2822. </p>
  2823. <div class="example">
  2824. <script type="text/javascript">
  2825. $(document).ready(function() {
  2826. $('#example-enableFiltering-enableClickableOptGroups').multiselect({
  2827. enableFiltering: true,
  2828. enableClickableOptGroups: true
  2829. });
  2830. });
  2831. </script>
  2832. <select id="example-enableFiltering-enableClickableOptGroups" multiple="multiple">
  2833. <optgroup label="Group 1">
  2834. <option value="1-1">Option 1.1</option>
  2835. <option value="1-2" selected="selected">Option 1.2</option>
  2836. <option value="1-3" selected="selected">Option 1.3</option>
  2837. </optgroup>
  2838. <optgroup label="Group 2">
  2839. <option value="2-1">Option 2.1</option>
  2840. <option value="2-2">Option 2.2</option>
  2841. <option value="2-3">Option 2.3</option>
  2842. </optgroup>
  2843. </select>
  2844. </div>
  2845. <div class="highlight">
  2846. <pre class="prettyprint linenums">
  2847. &lt;script type=&quot;text/javascript&quot;&gt;
  2848. $(document).ready(function() {
  2849. $('#example-example-enableFiltering-enableClickableOptgroups').multiselect({
  2850. enableFiltering: true,
  2851. enableClickableOptGroups: true
  2852. });
  2853. });
  2854. &lt;/script&gt;
  2855. </pre>
  2856. </div>
  2857. <p>
  2858. Finally, the option can also be used together with <code>onChange</code> or similar events:
  2859. </p>
  2860. <div class="example">
  2861. <script type="text/javascript">
  2862. $(document).ready(function() {
  2863. $('#example-enableFiltering-onChange-onDropdownHide').multiselect({
  2864. enableFiltering: true,
  2865. onChange: function(option, checked) {
  2866. alert('onChange!');
  2867. },
  2868. onDropdownHide: function(event) {
  2869. alert('onDropdownHide!');
  2870. }
  2871. });
  2872. });
  2873. </script>
  2874. <select id="example-enableFiltering-onChange-onDropdownHide" multiple="multiple">
  2875. <option value="1">Option 1</option>
  2876. <option value="2">Option 2</option>
  2877. <option value="3">Option 3</option>
  2878. <option value="4">Option 4</option>
  2879. <option value="5">Option 5</option>
  2880. <option value="6">Option 6</option>
  2881. <option value="7">Option 7</option>
  2882. <option value="8">Option 8</option>
  2883. <option value="9">Option 9</option>
  2884. <option value="10">Option 10</option>
  2885. <option value="11">Option 11</option>
  2886. <option value="12">Option 12</option>
  2887. <option value="13">Option 13</option>
  2888. <option value="14">Option 14</option>
  2889. <option value="15">Option 15</option>
  2890. </select>
  2891. </div>
  2892. <div class="highlight">
  2893. <pre class="prettyprint linenums">
  2894. &lt;script type=&quot;text/javascript&quot;&gt;
  2895. $(document).ready(function() {
  2896. $('#example-enableFiltering-onChange-onDropdownHide').multiselect({
  2897. enableFiltering: true,
  2898. onChange: function(option, checked) {
  2899. alert('onChange!');
  2900. },
  2901. onDropdownHide: function(event) {
  2902. alert('onDropdownHide!');
  2903. }
  2904. });
  2905. });
  2906. &lt;/script&gt;
  2907. </pre>
  2908. </div>
  2909. </td>
  2910. </tr>
  2911. <tr>
  2912. <td>
  2913. <code id="configuration-options-enableCaseInsensitiveFiltering">enableCaseInsensitiveFiltering</code>
  2914. </td>
  2915. <td>
  2916. <p>
  2917. The filter as configured above will use case sensitive filtering, by setting <code>enableCaseInsensitiveFiltering</code> to <code>true</code> this behavior can be changed to use case insensitive filtering.
  2918. </p>
  2919. <div class="example">
  2920. <script type="text/javascript">
  2921. $(document).ready(function() {
  2922. $('#example-enableCaseInsensitiveFiltering').multiselect({
  2923. enableCaseInsensitiveFiltering: true
  2924. });
  2925. });
  2926. </script>
  2927. <select id="example-enableCaseInsensitiveFiltering" multiple="multiple">
  2928. <option value="1">OpTiOn 1</option>
  2929. <option value="2">OpTiOn 2</option>
  2930. <option value="3">OpTiOn 3</option>
  2931. <option value="4">OpTiOn 4</option>
  2932. <option value="5">OpTiOn 5</option>
  2933. <option value="6">OpTiOn 6</option>
  2934. <option value="7">OpTiOn 7</option>
  2935. <option value="8">OpTiOn 8</option>
  2936. <option value="9">OpTiOn 9</option>
  2937. <option value="10">OpTiOn 10</option>
  2938. <option value="11">OpTiOn 11</option>
  2939. <option value="12">OpTiOn 12</option>
  2940. <option value="13">OpTiOn 13</option>
  2941. <option value="14">OpTiOn 14</option>
  2942. <option value="15">OpTiOn 15</option>
  2943. </select>
  2944. </div>
  2945. <div class="highlight">
  2946. <pre class="prettyprint linenums">
  2947. &lt;script type=&quot;text/javascript&quot;&gt;
  2948. $(document).ready(function() {
  2949. $('#example-enableCaseInsensitiveFiltering').multiselect({
  2950. enableCaseInsensitiveFiltering: true
  2951. });
  2952. });
  2953. &lt;/script&gt;
  2954. </pre>
  2955. </div>
  2956. </td>
  2957. </tr>
  2958. <tr>
  2959. <td>
  2960. <code id="configuration-options-enableFullValueFiltering">enableFullValueFiltering</code>
  2961. </td>
  2962. <td>
  2963. <p>
  2964. Set to <code>true</code> to enable full value filtering, that is all options are shown where the query is a prefix of. An example is given here: <a href="https://github.com/davidstutz/bootstrap-multiselect/pull/555">#555</a>.
  2965. </p>
  2966. <div class="example">
  2967. <script type="text/javascript">
  2968. $(document).ready(function() {
  2969. $('#example-enableFullValueFiltering').multiselect({
  2970. enableFiltering: true,
  2971. enableFullValueFiltering: true
  2972. });
  2973. });
  2974. </script>
  2975. <select id="example-enableFullValueFiltering" multiple="multiple">
  2976. <option value="1">Option 1</option>
  2977. <option value="2">Option 2</option>
  2978. <option value="3">Option 3</option>
  2979. <option value="4">Option 4</option>
  2980. <option value="5">Option 5</option>
  2981. <option value="6">Option 6</option>
  2982. <option value="7">Option 7</option>
  2983. <option value="8">Option 8</option>
  2984. <option value="9">Option 9</option>
  2985. <option value="10">Option 10</option>
  2986. <option value="11">Option 11</option>
  2987. <option value="12">Option 12</option>
  2988. <option value="13">Option 13</option>
  2989. <option value="14">Option 14</option>
  2990. <option value="15">Option 15</option>
  2991. </select>
  2992. </div>
  2993. <div class="highlight">
  2994. <pre class="prettyprint linenums">
  2995. &lt;script type=&quot;text/javascript&quot;&gt;
  2996. $(document).ready(function() {
  2997. $('#example-enableFullValueFiltering').multiselect({
  2998. enableFiltering: true,
  2999. enableFullValueFiltering: true
  3000. });
  3001. });
  3002. &lt;/script&gt;
  3003. </pre>
  3004. </div>
  3005. </td>
  3006. </tr>
  3007. <tr>
  3008. <td>
  3009. <code id="configuration-options-filterBehavior">filterBehavior</code>
  3010. </td>
  3011. <td>
  3012. <p>
  3013. The options are filtered based on their <code>text</code>. This behavior can be changed to use the <code>value</code> of the options or <code>both</code> the text and the value.
  3014. </p>
  3015. <div class="example">
  3016. <script type="text/javascript">
  3017. $(document).ready(function() {
  3018. $('#example-filterBehavior').multiselect({
  3019. enableFiltering: true,
  3020. filterBehavior: 'value'
  3021. });
  3022. });
  3023. </script>
  3024. <p>
  3025. In this example, the options have values from <code>a</code> to <code>n</code>. Instead of searching the text of the options, the value of the options is searched.
  3026. </p>
  3027. <select id="example-filterBehavior" multiple="multiple">
  3028. <option value="a">Option 1</option>
  3029. <option value="b">Option 2</option>
  3030. <option value="c">Option 3</option>
  3031. <option value="d">Option 4</option>
  3032. <option value="e">Option 5</option>
  3033. <option value="f">Option 6</option>
  3034. <option value="g">Option 7</option>
  3035. <option value="h">Option 8</option>
  3036. <option value="i">Option 9</option>
  3037. <option value="j">Option 10</option>
  3038. <option value="k">Option 11</option>
  3039. <option value="l">Option 12</option>
  3040. <option value="m">Option 13</option>
  3041. <option value="n">Option 14</option>
  3042. </select>
  3043. </div>
  3044. <div class="highlight">
  3045. <pre class="prettyprint linenums">
  3046. &lt;script type=&quot;text/javascript&quot;&gt;
  3047. $(document).ready(function() {
  3048. $('#example-filterBehavior').multiselect({
  3049. enableFiltering: true,
  3050. filterBehavior: 'value'
  3051. });
  3052. });
  3053. &lt;/script&gt;
  3054. &lt;select id="example-filterBehavior" multiple="multiple"&gt;
  3055. &lt;option value=&quot;a"&gt;Option 1&lt;/option&gt;
  3056. &lt;option value="b"&gt;Option 2&lt;/option&gt;
  3057. &lt;option value="c"&gt;Option 3&lt;/option&gt;
  3058. &lt;option value="d"&gt;Option 4&lt;/option&gt;
  3059. &lt;option value="e"&gt;Option 5&lt;/option&gt;
  3060. &lt;option value="f"&gt;Option 6&lt;/option&gt;
  3061. &lt;option value="g"&gt;Option 7&lt;/option&gt;
  3062. &lt;option value="h"&gt;Option 8&lt;/option&gt;
  3063. &lt;option value="i"&gt;Option 9&lt;/option&gt;
  3064. &lt;option value="j"&gt;Option 10&lt;/option&gt;
  3065. &lt;option value="k"&gt;Option 11&lt;/option&gt;
  3066. &lt;option value="l"&gt;Option 12&lt;/option&gt;
  3067. &lt;option value="m"&gt;Option 13&lt;/option&gt;
  3068. &lt;option value="n"&gt;Option 14&lt;/option&gt;
  3069. &lt;/select&gt;
  3070. </pre>
  3071. </div>
  3072. </td>
  3073. </tr>
  3074. <tr>
  3075. <td>
  3076. <code id="configuration-options-filterPlaceholder">filterPlaceholder</code>
  3077. </td>
  3078. <td>
  3079. <p>
  3080. The placeholder used for the filter input.
  3081. </p>
  3082. <div class="example">
  3083. <script type="text/javascript">
  3084. $(document).ready(function() {
  3085. $('#example-filter-placeholder').multiselect({
  3086. enableFiltering: true,
  3087. filterPlaceholder: 'Search for something...'
  3088. });
  3089. });
  3090. </script>
  3091. <select id="example-filter-placeholder" multiple="multiple">
  3092. <option value="a">Option 1</option>
  3093. <option value="b">Option 2</option>
  3094. <option value="c">Option 3</option>
  3095. <option value="d">Option 4</option>
  3096. <option value="e">Option 5</option>
  3097. <option value="f">Option 6</option>
  3098. <option value="g">Option 7</option>
  3099. <option value="h">Option 8</option>
  3100. <option value="i">Option 9</option>
  3101. <option value="j">Option 10</option>
  3102. <option value="k">Option 11</option>
  3103. <option value="l">Option 12</option>
  3104. <option value="m">Option 13</option>
  3105. <option value="n">Option 14</option>
  3106. </select>
  3107. </div>
  3108. <div class="highlight">
  3109. <pre class="prettyprint linenums">
  3110. &lt;script type=&quot;text/javascript&quot;&gt;
  3111. $(document).ready(function() {
  3112. $('#example-filter-placeholder').multiselect({
  3113. enableFiltering: true,
  3114. filterPlaceholder: 'Search for something...'
  3115. });
  3116. });
  3117. &lt;/script&gt;
  3118. &lt;select id="example-filter-placeholder" multiple="multiple"&gt;
  3119. &lt;option value=&quot;a"&gt;Option 1&lt;/option&gt;
  3120. &lt;option value="b"&gt;Option 2&lt;/option&gt;
  3121. &lt;option value="c"&gt;Option 3&lt;/option&gt;
  3122. &lt;option value="d"&gt;Option 4&lt;/option&gt;
  3123. &lt;option value="e"&gt;Option 5&lt;/option&gt;
  3124. &lt;option value="f"&gt;Option 6&lt;/option&gt;
  3125. &lt;option value="g"&gt;Option 7&lt;/option&gt;
  3126. &lt;option value="h"&gt;Option 8&lt;/option&gt;
  3127. &lt;option value="i"&gt;Option 9&lt;/option&gt;
  3128. &lt;option value="j"&gt;Option 10&lt;/option&gt;
  3129. &lt;option value="k"&gt;Option 11&lt;/option&gt;
  3130. &lt;option value="l"&gt;Option 12&lt;/option&gt;
  3131. &lt;option value="m"&gt;Option 13&lt;/option&gt;
  3132. &lt;option value="n"&gt;Option 14&lt;/option&gt;
  3133. &lt;/select&gt;
  3134. </pre>
  3135. </div>
  3136. </td>
  3137. </tr>
  3138. <tr>
  3139. <td>
  3140. <code id="configuration-options-includeResetOption">includeResetOption</code>
  3141. </td>
  3142. <td>
  3143. <p>
  3144. Add reset button to dropdown.
  3145. </p>
  3146. <div class="example">
  3147. <script type="text/javascript">
  3148. $(document).ready(function() {
  3149. $('#example-include-reset-option').multiselect({
  3150. includeResetOption: true
  3151. });
  3152. });
  3153. </script>
  3154. <select id="example-include-reset-option" multiple="multiple">
  3155. <option value="a">Option 1</option>
  3156. <option value="b">Option 2</option>
  3157. <option value="c">Option 3</option>
  3158. <option value="d">Option 4</option>
  3159. <option value="e">Option 5</option>
  3160. <option value="f">Option 6</option>
  3161. <option value="g">Option 7</option>
  3162. <option value="h">Option 8</option>
  3163. <option value="i">Option 9</option>
  3164. <option value="j">Option 10</option>
  3165. <option value="k">Option 11</option>
  3166. <option value="l">Option 12</option>
  3167. <option value="m">Option 13</option>
  3168. <option value="n">Option 14</option>
  3169. </select>
  3170. </div>
  3171. <div class="highlight">
  3172. <pre class="prettyprint linenums">
  3173. &lt;script type=&quot;text/javascript&quot;&gt;
  3174. $(document).ready(function() {
  3175. $('#example-include-reset-option').multiselect({
  3176. includeResetOption: true
  3177. });
  3178. });
  3179. &lt;/script&gt;
  3180. &lt;select id="example-include-reset-option" multiple="multiple"&gt;
  3181. &lt;option value=&quot;a"&gt;Option 1&lt;/option&gt;
  3182. &lt;option value="b"&gt;Option 2&lt;/option&gt;
  3183. &lt;option value="c"&gt;Option 3&lt;/option&gt;
  3184. &lt;option value="d"&gt;Option 4&lt;/option&gt;
  3185. &lt;option value="e"&gt;Option 5&lt;/option&gt;
  3186. &lt;option value="f"&gt;Option 6&lt;/option&gt;
  3187. &lt;option value="g"&gt;Option 7&lt;/option&gt;
  3188. &lt;option value="h"&gt;Option 8&lt;/option&gt;
  3189. &lt;option value="i"&gt;Option 9&lt;/option&gt;
  3190. &lt;option value="j"&gt;Option 10&lt;/option&gt;
  3191. &lt;option value="k"&gt;Option 11&lt;/option&gt;
  3192. &lt;option value="l"&gt;Option 12&lt;/option&gt;
  3193. &lt;option value="m"&gt;Option 13&lt;/option&gt;
  3194. &lt;option value="n"&gt;Option 14&lt;/option&gt;
  3195. &lt;/select&gt;
  3196. </pre>
  3197. </div>
  3198. </td>
  3199. </tr>
  3200. <tr>
  3201. <td>
  3202. <code id="configuration-options-includeResetDivider">includeResetDivider</code>
  3203. </td>
  3204. <td>
  3205. <p>
  3206. Add a divider between reset button and options.
  3207. </p>
  3208. <div class="example">
  3209. <script type="text/javascript">
  3210. $(document).ready(function() {
  3211. $('#example-include-reset-divider').multiselect({
  3212. includeResetOption: true,
  3213. includeResetDivider: true
  3214. });
  3215. });
  3216. </script>
  3217. <select id="example-include-reset-divider" multiple="multiple">
  3218. <option value="a">Option 1</option>
  3219. <option value="b">Option 2</option>
  3220. <option value="c">Option 3</option>
  3221. <option value="d">Option 4</option>
  3222. <option value="e">Option 5</option>
  3223. <option value="f">Option 6</option>
  3224. <option value="g">Option 7</option>
  3225. <option value="h">Option 8</option>
  3226. <option value="i">Option 9</option>
  3227. <option value="j">Option 10</option>
  3228. <option value="k">Option 11</option>
  3229. <option value="l">Option 12</option>
  3230. <option value="m">Option 13</option>
  3231. <option value="n">Option 14</option>
  3232. </select>
  3233. </div>
  3234. <div class="highlight">
  3235. <pre class="prettyprint linenums">
  3236. &lt;script type=&quot;text/javascript&quot;&gt;
  3237. $(document).ready(function() {
  3238. $('#example-include-reset-divider').multiselect({
  3239. includeResetOption: true,
  3240. includeResetDivider: true
  3241. });
  3242. });
  3243. &lt;/script&gt;
  3244. &lt;select id="example-include-reset-divider" multiple="multiple"&gt;
  3245. &lt;option value=&quot;a"&gt;Option 1&lt;/option&gt;
  3246. &lt;option value="b"&gt;Option 2&lt;/option&gt;
  3247. &lt;option value="c"&gt;Option 3&lt;/option&gt;
  3248. &lt;option value="d"&gt;Option 4&lt;/option&gt;
  3249. &lt;option value="e"&gt;Option 5&lt;/option&gt;
  3250. &lt;option value="f"&gt;Option 6&lt;/option&gt;
  3251. &lt;option value="g"&gt;Option 7&lt;/option&gt;
  3252. &lt;option value="h"&gt;Option 8&lt;/option&gt;
  3253. &lt;option value="i"&gt;Option 9&lt;/option&gt;
  3254. &lt;option value="j"&gt;Option 10&lt;/option&gt;
  3255. &lt;option value="k"&gt;Option 11&lt;/option&gt;
  3256. &lt;option value="l"&gt;Option 12&lt;/option&gt;
  3257. &lt;option value="m"&gt;Option 13&lt;/option&gt;
  3258. &lt;option value="n"&gt;Option 14&lt;/option&gt;
  3259. &lt;/select&gt;
  3260. </pre>
  3261. </div>
  3262. </td>
  3263. </tr>
  3264. <tr>
  3265. <td>
  3266. <code id="configuration-options-resetText">resetText</code>
  3267. </td>
  3268. <td>
  3269. <p>
  3270. Add reset button to dropdown.
  3271. </p>
  3272. <div class="example">
  3273. <script type="text/javascript">
  3274. $(document).ready(function() {
  3275. $('#example-reset-text').multiselect({
  3276. includeResetOption: true,
  3277. resetText: "Reset all"
  3278. });
  3279. });
  3280. </script>
  3281. <select id="example-reset-text" multiple="multiple">
  3282. <option value="a">Option 1</option>
  3283. <option value="b">Option 2</option>
  3284. <option value="c">Option 3</option>
  3285. <option value="d">Option 4</option>
  3286. <option value="e">Option 5</option>
  3287. <option value="f">Option 6</option>
  3288. <option value="g">Option 7</option>
  3289. <option value="h">Option 8</option>
  3290. <option value="i">Option 9</option>
  3291. <option value="j">Option 10</option>
  3292. <option value="k">Option 11</option>
  3293. <option value="l">Option 12</option>
  3294. <option value="m">Option 13</option>
  3295. <option value="n">Option 14</option>
  3296. </select>
  3297. </div>
  3298. <div class="highlight">
  3299. <pre class="prettyprint linenums">
  3300. &lt;script type=&quot;text/javascript&quot;&gt;
  3301. $(document).ready(function() {
  3302. $('#example-reset-text').multiselect({
  3303. includeResetOption: true,
  3304. resetText: "Reset all"
  3305. });
  3306. });
  3307. &lt;/script&gt;
  3308. &lt;select id="example-reset-text" multiple="multiple"&gt;
  3309. &lt;option value=&quot;a"&gt;Option 1&lt;/option&gt;
  3310. &lt;option value="b"&gt;Option 2&lt;/option&gt;
  3311. &lt;option value="c"&gt;Option 3&lt;/option&gt;
  3312. &lt;option value="d"&gt;Option 4&lt;/option&gt;
  3313. &lt;option value="e"&gt;Option 5&lt;/option&gt;
  3314. &lt;option value="f"&gt;Option 6&lt;/option&gt;
  3315. &lt;option value="g"&gt;Option 7&lt;/option&gt;
  3316. &lt;option value="h"&gt;Option 8&lt;/option&gt;
  3317. &lt;option value="i"&gt;Option 9&lt;/option&gt;
  3318. &lt;option value="j"&gt;Option 10&lt;/option&gt;
  3319. &lt;option value="k"&gt;Option 11&lt;/option&gt;
  3320. &lt;option value="l"&gt;Option 12&lt;/option&gt;
  3321. &lt;option value="m"&gt;Option 13&lt;/option&gt;
  3322. &lt;option value="n"&gt;Option 14&lt;/option&gt;
  3323. &lt;/select&gt;
  3324. </pre>
  3325. </div>
  3326. </td>
  3327. </tr>
  3328. </tbody>
  3329. </table>
  3330. <div class="page-header">
  3331. <h2 id="templates">Templates</h2>
  3332. </div>
  3333. <p>
  3334. The generated HTML markup can be controlled using templates. Basically, templates are simple configuration options. The default templates are shown below:
  3335. </p>
  3336. <p class="alert alert-warning">
  3337. However, note that messing with the template's classes may cause unexpected behavior. For example the button should always have the class <code>.multiselect</code>,
  3338. </p>
  3339. <p class="alert alert-info">
  3340. In addition, note that other options may also have influence on the templates, for example the <code>buttonClass</code> option.
  3341. </p>
  3342. <pre class="prettyprint linenums">
  3343. &lt;script type=&quot;text/javascript&quot;&gt;
  3344. $(document).ready(function() {
  3345. $('#example').multiselect({
  3346. templates: {
  3347. button: '&lt;button type=&quot;button&quot; class=&quot;multiselect dropdown-toggle&quot; data-toggle=&quot;dropdown&quot;&gt;&lt;/button&gt;',
  3348. ul: '&lt;ul class=&quot;multiselect-container dropdown-menu&quot;&gt;&lt;/ul&gt;',
  3349. filter: '&lt;li class=&quot;multiselect-item filter&quot;&gt;&lt;div class=&quot;input-group&quot;&gt;&lt;span class=&quot;input-group-addon&quot;&gt;&lt;i class=&quot;glyphicon glyphicon-search&quot;&gt;&lt;/i&gt;&lt;/span&gt;&lt;input class=&quot;form-control multiselect-search&quot; type=&quot;text&quot;&gt;&lt;/div&gt;&lt;/li&gt;',
  3350. filterClearBtn: '&lt;span class=&quot;input-group-btn&quot;&gt;&lt;button class=&quot;btn btn-default multiselect-clear-filter&quot; type=&quot;button&quot;&gt;&lt;i class=&quot;glyphicon glyphicon-remove-circle&quot;&gt;&lt;/i&gt;&lt;/button&gt;&lt;/span&gt;',
  3351. li: '&lt;li&gt;&lt;a href=&quot;javascript:void(0);&quot;&gt;&lt;label&gt;&lt;/label&gt;&lt;/a&gt;&lt;/li&gt;',
  3352. divider: '&lt;li class=&quot;multiselect-item divider&quot;&gt;&lt;/li&gt;',
  3353. liGroup: '&lt;li class=&quot;multiselect-item group&quot;&gt;&lt;label class=&quot;multiselect-group&quot;&gt;&lt;/label&gt;&lt;/li&gt;'
  3354. }
  3355. });
  3356. });
  3357. &lt;/script&gt;
  3358. </pre>
  3359. <p>
  3360. For example other elements instead of buttons may be used by adapting the template:
  3361. </p>
  3362. <div class="example">
  3363. <script type="text/javascript">
  3364. $(document).ready(function() {
  3365. $('#example-templates-button').multiselect({
  3366. buttonContainer: '<div></div>',
  3367. buttonClass: '',
  3368. templates: {
  3369. button: '<span class="multiselect dropdown-toggle" data-toggle="dropdown">Click me!</span>'
  3370. }
  3371. });
  3372. });
  3373. </script>
  3374. <style type="text/css">
  3375. span.multiselect {
  3376. padding: 2px 6px;
  3377. font-weight: bold;
  3378. cursor: pointer;
  3379. }
  3380. </style>
  3381. <select id="example-templates-button" multiple="multiple">
  3382. <option value="1">Option 1</option>
  3383. <option value="2">Option 2</option>
  3384. <option value="3">Option 3</option>
  3385. <option value="4">Option 4</option>
  3386. <option value="5">Option 5</option>
  3387. <option value="6">Option 6</option>
  3388. </select>
  3389. </div>
  3390. <div class="highlight">
  3391. <pre class="prettyprint linenums">
  3392. &lt;script type=&quot;text/javascript&quot;&gt;
  3393. $(document).ready(function() {
  3394. $('#example-templates-button').multiselect({
  3395. buttonContainer: '&lt;div&gt;&lt;/div&gt;',
  3396. buttonContainer: '',
  3397. buttonClass: '',
  3398. templates: {
  3399. button: '&lt;span class=&quot;multiselect dropdown-toggle&quot; data-toggle=&quot;dropdown&quot;&gt;Click me!&lt;/span&gt;'
  3400. }
  3401. });
  3402. });
  3403. &lt;/script&gt;
  3404. &lt;style type=&quot;text/css&quot;&gt;
  3405. span.multiselect {
  3406. padding: 2px 6px;
  3407. font-weight: bold;
  3408. cursor: pointer;
  3409. }
  3410. &lt;/style&gt;
  3411. </pre>
  3412. </div>
  3413. <p>
  3414. The most interesting template is the <code>li</code> template as it allows to customize the displayed options; for example (see <a href="https://github.com/davidstutz/bootstrap-multiselect/pull/738">#738</a> for details) to include input elements in the options:
  3415. </p>
  3416. <div class="example">
  3417. <script type="text/javascript">
  3418. $(document).ready(function() {
  3419. $('#example-templates-input').multiselect({
  3420. templates: {
  3421. li: '<li><a><label style="display:inline;"></label><input type="text" /></a></li>'
  3422. }
  3423. });
  3424. });
  3425. </script>
  3426. <style type="text/css">
  3427. span.multiselect {
  3428. padding: 2px 6px;
  3429. font-weight: bold;
  3430. cursor: pointer;
  3431. }
  3432. </style>
  3433. <select id="example-templates-input" multiple="multiple">
  3434. <option value="1">Option 1</option>
  3435. <option value="2">Option 2</option>
  3436. <option value="3">Option 3</option>
  3437. <option value="4">Option 4</option>
  3438. <option value="5">Option 5</option>
  3439. <option value="6">Option 6</option>
  3440. </select>
  3441. </div>
  3442. <div class="highlight">
  3443. <pre class="prettyprint linenums">
  3444. &lt;script type=&quot;text/javascript&quot;&gt;
  3445. $(document).ready(function() {
  3446. $('#example-templates-input').multiselect({
  3447. templates: {
  3448. li: '&lt;li&gt;&lt;a&gt;&lt;label style=&quot;display:inline;&quot;&gt;&lt;/label&gt;&lt;input type=&quot;text&quot; /&gt;&lt;/a&gt;&lt;/li&gt;'
  3449. }
  3450. });
  3451. });
  3452. &lt;/script&gt;
  3453. </pre>
  3454. <div class="page-header">
  3455. <h2 id="styling">Styling</h2>
  3456. </div>
  3457. <p>The style of the plugin is fully adaptable through CSS; a completely rendered example is shown below - including select all option, filter and option gorups_</p>
  3458. <pre class="prettyprint linenums">
  3459. &lt;ul class=&quot;multiselect-container dropdown-menu&quot;&gt;
  3460. &lt;!-- Filter --&gt;
  3461. &lt;li class=&quot;multiselect-item multiselect-filter&quot; value=&quot;0&quot;&gt;
  3462. &lt;div class=&quot;input-group&quot;&gt;
  3463. &lt;span class=&quot;input-group-addon&quot;&gt;&lt;i class=&quot;glyphicon glyphicon-search&quot;&gt;&lt;/i&gt;&lt;/span&gt;
  3464. &lt;input class=&quot;form-control multiselect-search&quot; type=&quot;text&quot; placeholder=&quot;Search&quot;&gt;
  3465. &lt;span class=&quot;input-group-btn&quot;&gt;
  3466. &lt;button class=&quot;btn btn-default multiselect-clear-filter&quot; type=&quot;button&quot;&gt;&lt;i class=&quot;glyphicon glyphicon-remove-circle&quot;&gt;&lt;/i&gt;&lt;/button&gt;
  3467. &lt;/span&gt;
  3468. &lt;/div&gt;
  3469. &lt;/li&gt;
  3470. &lt;!-- Select all --&gt;
  3471. &lt;li class=&quot;multiselect-item multiselect-all&quot; style=&quot;border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(234, 234, 234); background: rgb(243, 243, 243);&quot;&gt;
  3472. &lt;a tabindex=&quot;0&quot; class=&quot;multiselect-all&quot;&gt;&lt;label class=&quot;checkbox&quot; style=&quot;padding: 3px 20px 3px 35px;&quot;&gt;&lt;input type=&quot;checkbox&quot; value=&quot;multiselect-all&quot;&gt; Select all&lt;/label&gt;&lt;/a&gt;
  3473. &lt;/li&gt;
  3474. &lt;!-- Collapsible and clickable opt group --&gt;
  3475. &lt;li class=&quot;multiselect-item multiselect-group&quot;&gt;
  3476. &lt;a href=&quot;javascript:void(0);&quot;&gt;
  3477. &lt;label&gt;&lt;input type=&quot;checkbox&quot; value=&quot;undefined&quot;&gt;&lt;b&gt; Group 1&lt;/b&gt;&lt;/label&gt;
  3478. &lt;span class=&quot;caret-container&quot;&gt;&lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/span&gt;
  3479. &lt;/a&gt;
  3480. &lt;/li&gt;
  3481. &lt;!-- Disabled and hidden option (hidden because of collapsible opt groups) --&gt;
  3482. &lt;li class=&quot;disabled hidden&quot;&gt;
  3483. &lt;a tabindex=&quot;-1&quot;&gt;&lt;label class=&quot;checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; value=&quot;1-1&quot; disabled=&quot;&quot;&gt; Option 1.1&lt;/label&gt;&lt;/a&gt;
  3484. &lt;/li&gt;
  3485. &lt;!-- Hidden but select option --&gt;
  3486. &lt;li class=&quot;active hidden&quot;&gt;
  3487. &lt;a tabindex=&quot;0&quot;&gt;&lt;label class=&quot;checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; value=&quot;1-2&quot;&gt; Option 1.2&lt;/label&gt;&lt;/a&gt;
  3488. &lt;/li&gt;
  3489. &lt;!-- ... --&gt;
  3490. &lt;!-- Another opt group --&gt;
  3491. &lt;li class=&quot;multiselect-item multiselect-group&quot;&gt;
  3492. &lt;a href=&quot;javascript:void(0);&quot;&gt;
  3493. &lt;label&gt;&lt;input type=&quot;checkbox&quot; value=&quot;undefined&quot;&gt;&lt;b&gt; Group 2&lt;/b&gt;&lt;/label&gt;
  3494. &lt;span class=&quot;caret-container&quot;&gt;&lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/span&gt;
  3495. &lt;/a&gt;
  3496. &lt;/li&gt;
  3497. &lt;!-- Visible but not selected option --&gt;
  3498. &lt;li&gt;
  3499. &lt;a tabindex=&quot;0&quot;&gt;&lt;label class=&quot;checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; value=&quot;2-1&quot;&gt; Option 2.1&lt;/label&gt;&lt;/a&gt;
  3500. &lt;/li&gt;
  3501. &lt;/ul&gt;
  3502. </pre>
  3503. <p>
  3504. The most important classes are: <code>multiselect-container</code>, <code>multiselect-filter</code>, <code>multiselect-all</code>, <code>multiselect-item</code>, <code>multiselect-group</code> as well as <code>disabled</code> and <code>active</code>. Both for collapsing and filtering options, the classes <code>multiselect-filter-hidden</code> and <code>multiselect-collapsible-hidden</code> are used.
  3505. </p>
  3506. <div class="page-header">
  3507. <h2 id="methods">Methods</h2>
  3508. </div>
  3509. <table class="table layout-fixed">
  3510. <tbody>
  3511. <tr>
  3512. <td width="30%">
  3513. <code>.multiselect('destroy')</code>
  3514. </td>
  3515. <td>
  3516. <p>
  3517. This method is used to destroy the plugin on the given element - meaning unbinding the plugin.
  3518. </p>
  3519. <div class="example">
  3520. <div class="btn-group">
  3521. <script type="text/javascript">
  3522. $(document).ready(function() {
  3523. $('#example-destroy').multiselect();
  3524. $('#example-destroy-button').on('click', function() {
  3525. $('#example-destroy').multiselect('destroy');
  3526. });
  3527. });
  3528. </script>
  3529. <div class="btn-group">
  3530. <select id="example-destroy" multiple="multiple">
  3531. <option value="1">Option 1</option>
  3532. <option value="2">Option 2</option>
  3533. <option value="3">Option 3</option>
  3534. <option value="4">Option 4</option>
  3535. <option value="5">Option 5</option>
  3536. <option value="6">Option 6</option>
  3537. </select>
  3538. <button id="example-destroy-button" class="btn btn-danger">Destroy/Unbind</button>
  3539. </div>
  3540. </div>
  3541. </div>
  3542. <div class="highlight">
  3543. <pre class="prettyprint linenums">
  3544. &lt;script type=&quot;text/javascript&quot;&gt;
  3545. $(document).ready(function() {
  3546. $('#example-destroy').multiselect();
  3547. $('#example-destroy-button').on('click', function() {
  3548. $('#example-destroy').multiselect('destroy');
  3549. });
  3550. });
  3551. &lt;/script&gt;
  3552. </pre>
  3553. </div>
  3554. </td>
  3555. </tr>
  3556. <tr>
  3557. <td>
  3558. <code>.multiselect('refresh')</code>
  3559. </td>
  3560. <td>
  3561. <p>
  3562. This method is used to refresh the checked checkboxes based on the currently selected options within the <code>select</code>. Click &apos;Select some options&apos; to select some of the options. Then click refresh. The plugin will update the checkboxes accordingly.
  3563. </p>
  3564. <div class="example">
  3565. <div class="btn-group">
  3566. <script type="text/javascript">
  3567. $(document).ready(function() {
  3568. $('#example-refresh').multiselect();
  3569. $('#example-refresh-select').on('click', function() {
  3570. $('option[value="1"]', $('#example-refresh')).prop('selected', true);
  3571. $('option[value="3"]', $('#example-refresh')).prop('selected', true);
  3572. $('option[value="4"]', $('#example-refresh')).prop('selected', true);
  3573. alert('Option 1, 2 and 4.');
  3574. });
  3575. $('#example-refresh-deselect').on('click', function() {
  3576. $('option', $('#example-refresh')).each(function(element) {
  3577. $(this).removeAttr('selected').prop('selected', false);
  3578. });
  3579. });
  3580. $('#example-refresh-button').on('click', function() {
  3581. $('#example-refresh').multiselect('refresh');
  3582. });
  3583. });
  3584. </script>
  3585. <div class="btn-group">
  3586. <select id="example-refresh" multiple="multiple">
  3587. <option value="1">Option 1</option>
  3588. <option value="2">Option 2</option>
  3589. <option value="3">Option 3</option>
  3590. <option value="4">Option 4</option>
  3591. <option value="5">Option 5</option>
  3592. <option value="6">Option 6</option>
  3593. </select>
  3594. <button id="example-refresh-select" class="btn btn-default">Select some options!</button>
  3595. <button id="example-refresh-deselect" class="btn btn-default">Deselect some options...</button>
  3596. <button id="example-refresh-button" class="btn btn-primary">Refresh</button>
  3597. </div>
  3598. </div>
  3599. </div>
  3600. <div class="highlight">
  3601. <pre class="prettyprint linenums">
  3602. &lt;script type=&quot;text/javascript&quot;&gt;
  3603. $(document).ready(function() {
  3604. $('#example-refresh').multiselect();
  3605. $('#example-refresh-select').on('click', function() {
  3606. $('option[value="1"]', $('#example-refresh')).prop('selected', true);
  3607. $('option[value="3"]', $('#example-refresh')).prop('selected', true);
  3608. $('option[value="4"]', $('#example-refresh')).prop('selected', true);
  3609. alert('Option 1, 2 and 4.');
  3610. });
  3611. $('#example-refresh-deselect').on('click', function() {
  3612. $('option', $('#example-refresh')).each(function(element) {
  3613. $(this).removeAttr('selected').prop('selected', false);
  3614. });
  3615. });
  3616. $('#example-refresh-button').on('click', function() {
  3617. $('#example-refresh').multiselect('refresh');
  3618. });
  3619. });
  3620. &lt;/script&gt;
  3621. </pre>
  3622. </div>
  3623. </td>
  3624. </tr>
  3625. <tr>
  3626. <td>
  3627. <code>.multiselect('rebuild')</code>
  3628. </td>
  3629. <td>
  3630. <p>
  3631. Rebuilds the whole dropdown menu. All selected options will remain selected (if still existent!).
  3632. </p>
  3633. <div class="example">
  3634. <div class="btn-group">
  3635. <script type="text/javascript">
  3636. $(document).ready(function() {
  3637. $('#example-rebuild').multiselect();
  3638. $('#example-rebuild-button').on('click', function() {
  3639. $('#example-rebuild').multiselect('rebuild');
  3640. });
  3641. $('#example-rebuild-add').on('click', function() {
  3642. $('#example-rebuild').append('<option value="add1">Addition 1</option><option value="add2">Addition 2</option><option value="add3">Addition 3</option>');
  3643. });
  3644. $('#example-rebuild-delete').on('click', function() {
  3645. $('option[value="add1"]', $('#example-rebuild')).remove();
  3646. $('option[value="add2"]', $('#example-rebuild')).remove();
  3647. $('option[value="add3"]', $('#example-rebuild')).remove();
  3648. });
  3649. });
  3650. </script>
  3651. <div class="btn-group">
  3652. <select id="example-rebuild" multiple="multiple">
  3653. <option value="1">Option 1</option>
  3654. <option value="2">Option 2</option>
  3655. <option value="3">Option 3</option>
  3656. <option value="4">Option 4</option>
  3657. <option value="5">Option 5</option>
  3658. <option value="6">Option 6</option>
  3659. </select>
  3660. <button id="example-rebuild-add" class="btn btn-default">Add some options!</button>
  3661. <button id="example-rebuild-delete" class="btn btn-default">Remove some options...</button>
  3662. <button id="example-rebuild-button" class="btn btn-primary">Rebuild</button>
  3663. </div>
  3664. </div>
  3665. </div>
  3666. <div class="highlight">
  3667. <pre class="prettyprint linenums">
  3668. &lt;script type=&quot;text/javascript&quot;&gt;
  3669. $(document).ready(function() {
  3670. $('#example-rebuild').multiselect();
  3671. $('#example-rebuild-button').on('click', function() {
  3672. $('#example-rebuild').multiselect('rebuild');
  3673. });
  3674. $('#example-rebuild-add').on('click', function() {
  3675. $('#example-rebuild').append('&lt;option value="add1"&gt;Addition 1&lt;/option&gt;
  3676. &lt;option value="add2"&gt;Addition 2&lt;/option&gt;&lt;option value="add3"&gt;Addition 3&lt;/option&gt;');
  3677. });
  3678. $('#example-rebuild-delete').on('click', function() {
  3679. $('option[value="add1"]', $('#example-rebuild')).remove();
  3680. $('option[value="add2"]', $('#example-rebuild')).remove();
  3681. $('option[value="add3"]', $('#example-rebuild')).remove();
  3682. });
  3683. });
  3684. &lt;/script&gt;
  3685. </pre>
  3686. </div>
  3687. </td>
  3688. </tr>
  3689. <tr>
  3690. <td>
  3691. <code>.multiselect('select', value)</code>
  3692. </td>
  3693. <td>
  3694. <p>
  3695. Selects an option by its value. Works also using an array of values.
  3696. </p>
  3697. <div class="example">
  3698. <div class="btn-group">
  3699. <script type="text/javascript">
  3700. $(document).ready(function() {
  3701. $('#example-select').multiselect();
  3702. $('#example-select-button').on('click', function() {
  3703. $('#example-select').multiselect('select', ['1', '2', '4']);
  3704. alert('Selected 1, 2 and 4.');
  3705. });
  3706. });
  3707. </script>
  3708. <div class="btn-group">
  3709. <select id="example-select" multiple="multiple">
  3710. <option value="1">Option 1</option>
  3711. <option value="2">Option 2</option>
  3712. <option value="3">Option 3</option>
  3713. <option value="4">Option 4</option>
  3714. <option value="5">Option 5</option>
  3715. <option value="6">Option 6</option>
  3716. </select>
  3717. <button id="example-select-button" class="btn btn-default">Select some options...</button>
  3718. </div>
  3719. </div>
  3720. </div>
  3721. <div class="highlight">
  3722. <pre class="prettyprint linenums">
  3723. &lt;script type=&quot;text/javascript&quot;&gt;
  3724. $(document).ready(function() {
  3725. $('#example-select').multiselect();
  3726. $('#example-select-button').on('click', function() {
  3727. $('#example-select').multiselect('select', ['1', '2', '4']);
  3728. alert('Selected 1, 2 and 4.');
  3729. });
  3730. });
  3731. &lt;/script&gt;
  3732. </pre>
  3733. </div>
  3734. <p>
  3735. The method provides an additional parameter: <code>.multiselect('select', value, triggerOnChange)</code>. If the second parameter is set to true, the method will manually trigger the <code>onChange</code> option.
  3736. </p>
  3737. <div class="example">
  3738. <div class="btn-group">
  3739. <script type="text/javascript">
  3740. $(document).ready(function() {
  3741. $('#example-select-onChange').multiselect({
  3742. onChange: function(option, checked, select) {
  3743. alert('onChange triggered ...');
  3744. }
  3745. });
  3746. $('#example-select-onChange-button').on('click', function() {
  3747. $('#example-select-onChange').multiselect('select', '1', true);
  3748. });
  3749. });
  3750. </script>
  3751. <div class="btn-group">
  3752. <select id="example-select-onChange" multiple="multiple">
  3753. <option value="1">Option 1</option>
  3754. <option value="2">Option 2</option>
  3755. <option value="3">Option 3</option>
  3756. <option value="4">Option 4</option>
  3757. <option value="5">Option 5</option>
  3758. <option value="6">Option 6</option>
  3759. </select>
  3760. <button id="example-select-onChange-button" class="btn btn-default">Select one option</button>
  3761. </div>
  3762. </div>
  3763. </div>
  3764. <div class="highlight">
  3765. <pre class="prettyprint linenums">
  3766. &lt;script type=&quot;text/javascript&quot;&gt;
  3767. $(document).ready(function() {
  3768. $('#example-select-onChange').multiselect({
  3769. onChange: function(option, checked, select) {
  3770. alert('onChange triggered ...');
  3771. }
  3772. });
  3773. $('#example-select-onChange-button').on('click', function() {
  3774. $('#example-select-onChange').multiselect('select', '1', true);
  3775. });
  3776. });
  3777. &lt;/script&gt;
  3778. </pre>
  3779. </div>
  3780. <p>
  3781. The above parameter does also work when selecting multipe values. Note that <code>onChange</code> is called for each selected option individually!
  3782. </p>
  3783. <div class="example">
  3784. <div class="btn-group">
  3785. <script type="text/javascript">
  3786. $(document).ready(function() {
  3787. $('#example-select-onChange-array').multiselect({
  3788. onChange: function(option, checked, select) {
  3789. alert('onChange triggered ...');
  3790. }
  3791. });
  3792. $('#example-select-onChange-array-button').on('click', function() {
  3793. $('#example-select-onChange-array').multiselect('select', ['1', '3'], true);
  3794. });
  3795. });
  3796. </script>
  3797. <div class="btn-group">
  3798. <select id="example-select-onChange-array" multiple="multiple">
  3799. <option value="1">Option 1</option>
  3800. <option value="2">Option 2</option>
  3801. <option value="3">Option 3</option>
  3802. <option value="4">Option 4</option>
  3803. <option value="5">Option 5</option>
  3804. <option value="6">Option 6</option>
  3805. </select>
  3806. <button id="example-select-onChange-array-button" class="btn btn-default">Select two options</button>
  3807. </div>
  3808. </div>
  3809. </div>
  3810. <div class="highlight">
  3811. <pre class="prettyprint linenums">
  3812. &lt;script type=&quot;text/javascript&quot;&gt;
  3813. $(document).ready(function() {
  3814. $('#example-select-onChange-array').multiselect({
  3815. onChange: function(option, checked, select) {
  3816. alert('onChange triggered ...');
  3817. }
  3818. });
  3819. $('#example-select-onChange-array-button').on('click', function() {
  3820. $('#example-select-onChange-array').multiselect('select', ['1', '3'], true);
  3821. });
  3822. });
  3823. &lt;/script&gt;
  3824. </pre>
  3825. </div>
  3826. </td>
  3827. </tr>
  3828. <tr>
  3829. <td>
  3830. <code>.multiselect('deselect', value)</code>
  3831. </td>
  3832. <td>
  3833. <p>
  3834. Deselect an option by its value. Works also using an array of values.
  3835. </p>
  3836. <div class="example">
  3837. <div class="btn-group">
  3838. <script type="text/javascript">
  3839. $(document).ready(function() {
  3840. $('#example-deselect').multiselect();
  3841. $('#example-deselect-button').on('click', function() {
  3842. $('#example-deselect').multiselect('deselect', ['1', '2', '4']);
  3843. alert('Deselected 1, 2 and 4.');
  3844. });
  3845. });
  3846. </script>
  3847. <div class="btn-group">
  3848. <select id="example-deselect" multiple="multiple">
  3849. <option value="1">Option 1</option>
  3850. <option value="2">Option 2</option>
  3851. <option value="3">Option 3</option>
  3852. <option value="4">Option 4</option>
  3853. <option value="5">Option 5</option>
  3854. <option value="6">Option 6</option>
  3855. </select>
  3856. <button id="example-deselect-button" class="btn btn-default">Deselect some options...</button>
  3857. </div>
  3858. </div>
  3859. </div>
  3860. <div class="highlight">
  3861. <pre class="prettyprint linenums">
  3862. &lt;script type=&quot;text/javascript&quot;&gt;
  3863. $(document).ready(function() {
  3864. $('#example-deselect').multiselect();
  3865. $('#example-deselect-button').on('click', function() {
  3866. $('#example-deselect').multiselect('deselect', ['1', '2', '4']);
  3867. alert('Deselected 1, 2 and 4.');
  3868. });
  3869. });
  3870. &lt;/script&gt;
  3871. </pre>
  3872. </div>
  3873. <p>
  3874. The method provides an additional parameter: <code>.multiselect('deselect', value, triggerOnChange)</code>. If the second parameter is set to true, the method will manually trigger the <code>onChange</code> option.
  3875. </p>
  3876. <div class="example">
  3877. <div class="btn-group">
  3878. <script type="text/javascript">
  3879. $(document).ready(function() {
  3880. $('#example-deselect-onChange').multiselect({
  3881. onChange: function(option, checked, select) {
  3882. alert('onChange triggered ...');
  3883. }
  3884. });
  3885. $('#example-deselect-onChange-button').on('click', function() {
  3886. $('#example-deselect-onChange').multiselect('deselect', '1', true);
  3887. });
  3888. });
  3889. </script>
  3890. <div class="btn-group">
  3891. <select id="example-deselect-onChange" multiple="multiple">
  3892. <option value="1">Option 1</option>
  3893. <option value="2">Option 2</option>
  3894. <option value="3">Option 3</option>
  3895. <option value="4">Option 4</option>
  3896. <option value="5">Option 5</option>
  3897. <option value="6">Option 6</option>
  3898. </select>
  3899. <button id="example-deselect-onChange-button" class="btn btn-default">Deselect one option</button>
  3900. </div>
  3901. </div>
  3902. </div>
  3903. <div class="highlight">
  3904. <pre class="prettyprint linenums">
  3905. &lt;script type=&quot;text/javascript&quot;&gt;
  3906. $(document).ready(function() {
  3907. $('#example-deselect-onChange').multiselect({
  3908. onChange: function(option, checked, select) {
  3909. alert('onChange triggered ...');
  3910. }
  3911. });
  3912. $('#example-deselect-onChange-button').on('click', function() {
  3913. $('#example-deselect-onChange').multiselect('deselect', '1', true);
  3914. });
  3915. });
  3916. &lt;/script&gt;
  3917. </pre>
  3918. </div>
  3919. <p>
  3920. The above parameter does also work when deselecting multiple options. Note that <code>onChange</code> is called for each deselected option individually.
  3921. </p>
  3922. <div class="example">
  3923. <div class="btn-group">
  3924. <script type="text/javascript">
  3925. $(document).ready(function() {
  3926. $('#example-deselect-onChange-array').multiselect({
  3927. onChange: function(option, checked, select) {
  3928. alert('onChange triggered ...');
  3929. }
  3930. });
  3931. $('#example-deselect-onChange-array-button').on('click', function() {
  3932. $('#example-deselect-onChange-array').multiselect('deselect', ['1', '3'], true);
  3933. });
  3934. });
  3935. </script>
  3936. <div class="btn-group">
  3937. <select id="example-deselect-onChange-array" multiple="multiple">
  3938. <option value="1" selected>Option 1</option>
  3939. <option value="2">Option 2</option>
  3940. <option value="3" selected>Option 3</option>
  3941. <option value="4">Option 4</option>
  3942. <option value="5">Option 5</option>
  3943. <option value="6">Option 6</option>
  3944. </select>
  3945. <button id="example-deselect-onChange-array-button" class="btn btn-default">Deselect two options</button>
  3946. </div>
  3947. </div>
  3948. </div>
  3949. <div class="highlight">
  3950. <pre class="prettyprint linenums">
  3951. &lt;script type=&quot;text/javascript&quot;&gt;
  3952. $(document).ready(function() {
  3953. $('#example-deselect-onChange-array').multiselect({
  3954. onChange: function(option, checked, select) {
  3955. alert('onChange triggered ...');
  3956. }
  3957. });
  3958. $('#example-deselect-onChange-array-button').on('click', function() {
  3959. $('#example-deselect-onChange-array').multiselect('deselect', '1', true);
  3960. });
  3961. });
  3962. &lt;/script&gt;
  3963. </pre>
  3964. </div>
  3965. </td>
  3966. </tr>
  3967. <tr>
  3968. <td>
  3969. <code>.multiselect('selectAll', justVisible)</code>
  3970. </td>
  3971. <td>
  3972. <p>
  3973. Selects all options. If <code>justVisible</code> is set to <code>true</code> or not provided, all visible options are selected (when using the filter), otherweise (<code>justVisible</code> set to <code>false</code>) all options are selected.
  3974. </p>
  3975. <p class="alert alert-info">
  3976. Note that setting <code>justVisible</code> to <code>true</code>, or providing no parameter will select all visible options, that is the dropdown needs to be opened.
  3977. </p>
  3978. <p class="alert alert-info">
  3979. Currently, it is required to call <code>.multiselect('updateButtonText')</code> manually after calling <code>.multiselect('selectAll', justVisible)</code>.
  3980. </p>
  3981. <div class="example">
  3982. <div class="btn-group">
  3983. <script type="text/javascript">
  3984. $(document).ready(function() {
  3985. $('#example-selectAll').multiselect();
  3986. $('#example-selectAll-visible').on('click', function() {
  3987. $('#example-selectAll').multiselect('selectAll', true);
  3988. $('#example-selectAll').multiselect('updateButtonText');
  3989. });
  3990. $('#example-selectAll-all').on('click', function() {
  3991. $('#example-selectAll').multiselect('selectAll', false);
  3992. $('#example-selectAll').multiselect('updateButtonText');
  3993. });
  3994. });
  3995. </script>
  3996. <div class="btn-group">
  3997. <select id="example-selectAll" multiple="multiple">
  3998. <option value="1">Option 1</option>
  3999. <option value="2">Option 2</option>
  4000. <option value="3">Option 3</option>
  4001. <option value="4">Option 4</option>
  4002. <option value="5">Option 5</option>
  4003. <option value="6">Option 6</option>
  4004. </select>
  4005. <button id="example-selectAll-visible" class="btn btn-default">Select all visible options</button>
  4006. <button id="example-selectAll-all" class="btn btn-default">Select all options</button>
  4007. </div>
  4008. </div>
  4009. </div>
  4010. <div class="highlight">
  4011. <pre class="prettyprint linenums">
  4012. &lt;script type=&quot;text/javascript&quot;&gt;
  4013. $(document).ready(function() {
  4014. $('#example-selectAll').multiselect();
  4015. $('#example-selectAll-visible').on('click', function() {
  4016. $('#example-selectAll').multiselect('selectAll', true);
  4017. $('#example-selectAll').multiselect('updateButtonText');
  4018. });
  4019. $('#example-selectAll-all').on('click', function() {
  4020. $('#example-selectAll').multiselect('selectAll', false);
  4021. $('#example-selectAll').multiselect('updateButtonText');
  4022. });
  4023. });
  4024. &lt;/script&gt;
  4025. </pre>
  4026. </div>
  4027. </td>
  4028. </tr>
  4029. <tr>
  4030. <td>
  4031. <code>.multiselect('deselectAll', justVisible)</code>
  4032. </td>
  4033. <td>
  4034. <p>
  4035. Deselects all options. If <code>justVisible</code> is set to <code>true</code> or not provided, all visible options are deselected, otherweise (<code>justVisible</code> set to <code>false</code>) all options are deselected.
  4036. </p>
  4037. <p class="alert alert-info">
  4038. Note that setting <code>justVisible</code> to <code>true</code>, or providing no parameter will select all visible options, that is the dropdown needs to be opened.
  4039. </p>
  4040. <p class="alert alert-info">
  4041. Currently, it is required to call <code>.multiselect('updateButtonText')</code> manually after calling <code>.multiselect('selectAll', justVisible)</code>.
  4042. </p>
  4043. <div class="example">
  4044. <div class="btn-group">
  4045. <script type="text/javascript">
  4046. $(document).ready(function() {
  4047. $('#example-deselectAll').multiselect();
  4048. $('#example-deselectAll-visible').on('click', function() {
  4049. $('#example-deselectAll').multiselect('deselectAll', true);
  4050. $('#example-deselectAll').multiselect('updateButtonText');
  4051. });
  4052. $('#example-deselectAll-all').on('click', function() {
  4053. $('#example-deselectAll').multiselect('deselectAll', false);
  4054. $('#example-deselectAll').multiselect('updateButtonText');
  4055. });
  4056. });
  4057. </script>
  4058. <div class="btn-group">
  4059. <select id="example-deselectAll" multiple="multiple">
  4060. <option value="1">Option 1</option>
  4061. <option value="2">Option 2</option>
  4062. <option value="3">Option 3</option>
  4063. <option value="4">Option 4</option>
  4064. <option value="5">Option 5</option>
  4065. <option value="6">Option 6</option>
  4066. </select>
  4067. <button id="example-deselectAll-visible" class="btn btn-default">Deselect all visible options</button>
  4068. <button id="example-deselectAll-all" class="btn btn-default">Deselect all options</button>
  4069. </div>
  4070. </div>
  4071. </div>
  4072. <div class="highlight">
  4073. <pre class="prettyprint linenums">
  4074. &lt;script type=&quot;text/javascript&quot;&gt;
  4075. $(document).ready(function() {
  4076. $('#example-deselectAll').multiselect();
  4077. $('#example-deselectAll-visible').on('click', function() {
  4078. $('#example-deselectAll').multiselect('deselectAll', true);
  4079. $('#example-deselectAll').multiselect('updateButtonText');
  4080. });
  4081. $('#example-deselectAll-all').on('click', function() {
  4082. $('#example-deselectAll').multiselect('deselectAll', false);
  4083. $('#example-deselectAll').multiselect('updateButtonText');
  4084. });
  4085. });
  4086. &lt;/script&gt;
  4087. </pre>
  4088. </div>
  4089. </td>
  4090. </tr>
  4091. <tr>
  4092. <td>
  4093. <code>.multiselect('updateButtonText')</code>
  4094. </td>
  4095. <td>
  4096. <p>
  4097. When manually selecting/deselecting options and the corresponding checkboxes, this function updates the text and title of the button.
  4098. </p>
  4099. <p class="alert alert-info">
  4100. Note that usually this method is only needed when using <code>.multiselect('selectAll', justVisible)</code> or <code>.multiselect('deselectAll', justVisible)</code>. In all other cases, <code>.multiselect('refresh')</code> should be used.
  4101. </p>
  4102. <div class="example">
  4103. <div class="btn-group">
  4104. <script type="text/javascript">
  4105. $(document).ready(function() {
  4106. $('#example-updateButtonText').multiselect({
  4107. buttonContainer: '<div class="btn-group" id="example-updateButtonText-container"></div>'
  4108. });
  4109. $('#example-updateButtonText-select').on('click', function() {
  4110. $('option[value="1"]', $('#example-updateButtonText')).prop('selected', true);
  4111. $('option[value="3"]', $('#example-updateButtonText')).prop('selected', true);
  4112. $('input[value="1"]', $('#example-updateButtonText-container')).prop('checked', true);
  4113. $('input[value="3"]', $('#example-updateButtonText-container')).prop('checked', true);
  4114. $('input[value="1"]', $('#example-updateButtonText-container')).closest('li').addClass('active');
  4115. $('input[value="3"]', $('#example-updateButtonText-container')).closest('li').addClass('active');
  4116. });
  4117. $('#example-updateButtonText-update').on('click', function() {
  4118. $('#example-updateButtonText').multiselect('updateButtonText');
  4119. });
  4120. });
  4121. </script>
  4122. <div class="btn-group">
  4123. <select id="example-updateButtonText" multiple="multiple">
  4124. <option value="1">Option 1</option>
  4125. <option value="2">Option 2</option>
  4126. <option value="3">Option 3</option>
  4127. <option value="4">Option 4</option>
  4128. <option value="5">Option 5</option>
  4129. <option value="6">Option 6</option>
  4130. </select>
  4131. <button id="example-updateButtonText-select" class="btn btn-default">Select some options ...</button>
  4132. <button id="example-updateButtonText-update" class="btn btn-default">Update</button>
  4133. </div>
  4134. </div>
  4135. </div>
  4136. <div class="highlight">
  4137. <pre class="prettyprint linenums">
  4138. &lt;script type=&quot;text/javascript&quot;&gt;
  4139. $(document).ready(function() {
  4140. $('#example-deselectAll').multiselect();
  4141. $('#example-deselectAll-visible').on('click', function() {
  4142. $('#example-deselectAll').multiselect('updateButtonText', true);
  4143. });
  4144. });
  4145. &lt;/script&gt;
  4146. </pre>
  4147. </div>
  4148. </td>
  4149. </tr>
  4150. <tr>
  4151. <td>
  4152. <code>.multiselect('setOptions', options)</code>
  4153. </td>
  4154. <td>
  4155. <p>
  4156. Used to change configuration after initializing the multiselect. This may be useful in combination with <code>.multiselect('rebuild')</code>.
  4157. </p>
  4158. <div class="example">
  4159. <script type="text/javascript">
  4160. $(document).ready(function() {
  4161. var firstConfigurationSet = {
  4162. includeSelectAllOption: false,
  4163. enableFiltering: false
  4164. };
  4165. var secondConfigurationSet = {
  4166. includeSelectAllOption: false,
  4167. enableFiltering: true
  4168. };
  4169. var set = 1;
  4170. $('#example-setOptions').multiselect(firstConfigurationSet);
  4171. function rebuildMultiselect(options) {
  4172. $('#example-setOptions').multiselect('setOptions', options);
  4173. $('#example-setOptions').multiselect('rebuild');
  4174. }
  4175. $('#example-setOptions-button').on('click', function(event) {
  4176. switch (set) {
  4177. case 2:
  4178. rebuildMultiselect(firstConfigurationSet);
  4179. $(this).text('Configuration Set 2');
  4180. set = 1;
  4181. break;
  4182. case 1:
  4183. default:
  4184. rebuildMultiselect(secondConfigurationSet);
  4185. $(this).text('Configuration Set 1');
  4186. set = 2;
  4187. break;
  4188. }
  4189. });
  4190. });
  4191. </script>
  4192. <div class="btn-group">
  4193. <select id="example-setOptions" multiple="multiple">
  4194. <option value="1">Option 1</option>
  4195. <option value="2">Option 2</option>
  4196. <option value="3">Option 3</option>
  4197. <option value="4">Option 4</option>
  4198. <option value="5">Option 5</option>
  4199. <option value="6">Option 6</option>
  4200. </select>
  4201. <button id="example-setOptions-button" class="btn btn-primary">Configuration Set 2</button>
  4202. </div>
  4203. </div>
  4204. <div class="highlight">
  4205. <pre class="prettyprint linenums">
  4206. &lt;script type=&quot;text/javascript&quot;&gt;
  4207. $(document).ready(function() {
  4208. var firstConfigurationSet = {
  4209. includeSelectAllOption: false,
  4210. enableFiltering: false
  4211. };
  4212. var secondConfigurationSet = {
  4213. includeSelectAllOption: false,
  4214. enableFiltering: true
  4215. };
  4216. var set = 1;
  4217. $('#example-setOptions').multiselect(firstConfigurationSet);
  4218. function rebuildMultiselect(options) {
  4219. $('#example-setOptions').multiselect('setOptions', options);
  4220. $('#example-setOptions').multiselect('rebuild');
  4221. }
  4222. $('#example-setOptions-button').on('click', function(event) {
  4223. switch (set) {
  4224. case 2:
  4225. rebuildMultiselect(firstConfigurationSet);
  4226. $(this).text('Configuration Set 2');
  4227. set = 1;
  4228. break;
  4229. case 1:
  4230. default:
  4231. rebuildMultiselect(secondConfigurationSet);
  4232. $(this).text('Configuration Set 1');
  4233. set = 2;
  4234. break;
  4235. }
  4236. });
  4237. });
  4238. &lt;/script&gt;
  4239. </pre>
  4240. </div>
  4241. </td>
  4242. </tr>
  4243. <tr>
  4244. <td>
  4245. <code>.multiselect('disable')</code>
  4246. </td>
  4247. <td>
  4248. <p>
  4249. Disable both the underlying select and the dropdown button.
  4250. </p>
  4251. <div class="example">
  4252. <div class="btn-group">
  4253. <script type="text/javascript">
  4254. $(document).ready(function() {
  4255. $('#example-disable').multiselect();
  4256. $('#example-disable-button').on('click', function() {
  4257. $('#example-disable').multiselect('disable');
  4258. });
  4259. });
  4260. </script>
  4261. <div class="btn-group">
  4262. <select id="example-disable" multiple="multiple">
  4263. <option value="1">Option 1</option>
  4264. <option value="2">Option 2</option>
  4265. <option value="3">Option 3</option>
  4266. <option value="4">Option 4</option>
  4267. <option value="5">Option 5</option>
  4268. <option value="6">Option 6</option>
  4269. </select>
  4270. <button id="example-disable-button" class="btn btn-primary">Disable...</button>
  4271. </div>
  4272. </div>
  4273. </div>
  4274. <div class="highlight">
  4275. <pre class="prettyprint linenums">
  4276. &lt;script type=&quot;text/javascript&quot;&gt;
  4277. $(document).ready(function() {
  4278. $('#example-disable').multiselect();
  4279. $('#example-disable-button').on('click', function() {
  4280. $('#example-disable').multiselect('disable');
  4281. });
  4282. });
  4283. &lt;/script&gt;
  4284. </pre>
  4285. </div>
  4286. </td>
  4287. </tr>
  4288. <tr>
  4289. <td>
  4290. <code>.multiselect('enable')</code>
  4291. </td>
  4292. <td>
  4293. <p>
  4294. Enable both the underlying select and the dropdown button.
  4295. </p>
  4296. <div class="example">
  4297. <div class="btn-group">
  4298. <script type="text/javascript">
  4299. $(document).ready(function() {
  4300. $('#example-enable').multiselect();
  4301. $('#example-enable-button').on('click', function() {
  4302. $('#example-enable').multiselect('enable');
  4303. });
  4304. });
  4305. </script>
  4306. <div class="btn-group">
  4307. <select id="example-enable" disabled="disabled" multiple="multiple">
  4308. <option value="1">Option 1</option>
  4309. <option value="2">Option 2</option>
  4310. <option value="3">Option 3</option>
  4311. <option value="4">Option 4</option>
  4312. <option value="5">Option 5</option>
  4313. <option value="6">Option 6</option>
  4314. </select>
  4315. <button id="example-enable-button" class="btn btn-default">Enable!</button>
  4316. </div>
  4317. </div>
  4318. </div>
  4319. <div class="highlight">
  4320. <pre class="prettyprint linenums">
  4321. &lt;script type=&quot;text/javascript&quot;&gt;
  4322. $(document).ready(function() {
  4323. $('#example-enable').multiselect();
  4324. $('#example-enable-button').on('click', function() {
  4325. $('#example-enable').multiselect('enable');
  4326. });
  4327. });
  4328. &lt;/script&gt;
  4329. </pre>
  4330. </div>
  4331. </td>
  4332. </tr>
  4333. <tr>
  4334. <td>
  4335. <code>.multiselect('dataprovider', data)</code>
  4336. </td>
  4337. <td>
  4338. <p>
  4339. This method is used to provide options programmatically. See the example below.
  4340. </p>
  4341. <div class="example">
  4342. <div class="btn-group">
  4343. <script type="text/javascript">
  4344. $(document).ready(function() {
  4345. $('#example-dataprovider').multiselect();
  4346. var options = [
  4347. {label: 'Option 1', title: 'Option 1', value: '1', selected: true},
  4348. {label: 'Option 2', title: 'Option 2', value: '2'},
  4349. {label: 'Option 3', title: 'Option 3', value: '3', selected: true},
  4350. {label: 'Option 4', title: 'Option 4', value: '4'},
  4351. {label: 'Option 5', title: 'Option 5', value: '5'},
  4352. {label: 'Option 6', title: 'Option 6', value: '6', disabled: true}
  4353. ];
  4354. $('#example-dataprovider').multiselect('dataprovider', options);
  4355. });
  4356. </script>
  4357. <select id="example-dataprovider" multiple="multiple"></select>
  4358. </div>
  4359. </div>
  4360. <div class="highlight">
  4361. <pre class="prettyprint linenums">
  4362. &lt;script type=&quot;text/javascript&quot;&gt;
  4363. $('#example-dataprovider').multiselect();
  4364. var options = [
  4365. {label: 'Option 1', title: 'Option 1', value: '1', selected: true},
  4366. {label: 'Option 2', title: 'Option 2', value: '2'},
  4367. {label: 'Option 3', title: 'Option 3', value: '3', selected: true},
  4368. {label: 'Option 4', title: 'Option 4', value: '4'},
  4369. {label: 'Option 5', title: 'Option 5', value: '5'},
  4370. {label: 'Option 6', title: 'Option 6', value: '6', disabled: true}
  4371. ];
  4372. $('#example-dataprovider').multiselect('dataprovider', options);
  4373. &lt;/script&gt;
  4374. &lt;select id=&quot;example-dataprovider&quot; multiple=&quot;multiple&quot;&gt;&lt;/select&gt;
  4375. </pre>
  4376. </div>
  4377. <p>
  4378. The method is also able to handle <code>optgroup</code>'s:
  4379. </p>
  4380. <div class="example">
  4381. <div class="btn-group">
  4382. <script type="text/javascript">
  4383. $(document).ready(function() {
  4384. $('#example-dataprovider-optgroups').multiselect();
  4385. var optgroups = [
  4386. {
  4387. label: 'Group 1', children: [
  4388. {label: 'Option 1.1', value: '1-1', selected: true},
  4389. {label: 'Option 1.2', value: '1-2'},
  4390. {label: 'Option 1.3', value: '1-3'}
  4391. ]
  4392. },
  4393. {
  4394. label: 'Group 2', children: [
  4395. {label: 'Option 2.1', value: '1'},
  4396. {label: 'Option 2.2', value: '2'},
  4397. {label: 'Option 2.3', value: '3', disabled: true}
  4398. ]
  4399. }
  4400. ];
  4401. $('#example-dataprovider-optgroups').multiselect('dataprovider', optgroups);
  4402. });
  4403. </script>
  4404. <select id="example-dataprovider-optgroups" multiple="multiple"></select>
  4405. </div>
  4406. </div>
  4407. <div class="highlight">
  4408. <pre class="prettyprint linenums">
  4409. &lt;script type=&quot;text/javascript&quot;&gt;
  4410. $('#example-dataprovider-optgroups').multiselect();
  4411. var optgroups = [
  4412. {
  4413. label: 'Group 1', children: [
  4414. {label: 'Option 1.1', value: '1-1', selected: true},
  4415. {label: 'Option 1.2', value: '1-2'},
  4416. {label: 'Option 1.3', value: '1-3'}
  4417. ]
  4418. },
  4419. {
  4420. label: 'Group 2', children: [
  4421. {label: 'Option 2.1', value: '1'},
  4422. {label: 'Option 2.2', value: '2'},
  4423. {label: 'Option 2.3', value: '3', disabled: true}
  4424. ]
  4425. }
  4426. ];
  4427. $('#example-dataprovider-optgroups').multiselect('dataprovider', optgroups);
  4428. &lt;/script&gt;
  4429. &lt;select id=&quot;example-dataprovider-optgroups&quot; multiple=&quot;multiple&quot;&gt;&lt;/select&gt;
  4430. </pre>
  4431. </div>
  4432. <p>
  4433. You can add custom data attributes on option group children and non-grouped options:
  4434. </p>
  4435. <div class="example">
  4436. <div class="btn-group">
  4437. <script type="text/javascript">
  4438. $(document).ready(function() {
  4439. $('#example-dataprovider-data-attributes').multiselect();
  4440. var optionsData =[
  4441. {
  4442. "label": "Option 1",
  4443. "value": 1,
  4444. "selected": true,
  4445. "attributes": {
  4446. "some-attribute": 1,
  4447. "another-attribute": false
  4448. }
  4449. },
  4450. {
  4451. "label": "Option 2",
  4452. "value": 2,
  4453. "selected": false,
  4454. "attributes": {
  4455. "some-attribute": 2
  4456. }
  4457. }
  4458. ];
  4459. $('#example-dataprovider-data-attributes').multiselect('dataprovider', optionsData);
  4460. });
  4461. </script>
  4462. <select id="example-dataprovider-data-attributes" multiple="multiple"></select>
  4463. </div>
  4464. <div class="highlight">
  4465. <pre class="prettyprint linenums">
  4466. $(&#39;#example-dataprovider-data-attributes&#39;).multiselect();
  4467. var optionsData =[
  4468. {
  4469. &quot;label&quot;: &quot;Option 1&quot;,
  4470. &quot;value&quot;: 1,
  4471. &quot;selected&quot;: true,
  4472. &quot;attributes&quot;: {
  4473. &quot;some-attribute&quot;: 1,
  4474. &quot;another-attribute&quot;: false
  4475. }
  4476. },
  4477. {
  4478. &quot;label&quot;: &quot;Option 2&quot;,
  4479. &quot;value&quot;: 2,
  4480. &quot;selected&quot;: false,
  4481. &quot;attributes&quot;: {
  4482. &quot;some-attribute&quot;: 2
  4483. }
  4484. }
  4485. ];
  4486. $(&quot;#example-dataprovider-data-attributes&quot;).multiselect(&#39;dataprovider&#39;, optionsData);
  4487. });
  4488. &lt;/script&gt;
  4489. &lt;select id=&quot;example-dataprovider-data-attributes&quot; multiple=&quot;multiple&quot;&gt;&lt;/select&gt;
  4490. </pre>
  4491. </div>
  4492. </div>
  4493. <p>
  4494. Renders as:
  4495. </p>
  4496. <pre class="prettyprint">
  4497. &lt;option value=&quot;1&quot; label=&quot;Option 1&quot; selected=&quot;selected&quot; data-some-attribute=&quot;1&quot; data-another-attribute=&quot;false&quot;&gt;&lt;/option&gt;
  4498. &lt;option value=&quot;2&quot; label=&quot;Option 2&quot; data-some-attribute=&quot;2&quot;&gt;&lt;/option&gt;
  4499. </pre>
  4500. </td>
  4501. </tr>
  4502. <tr>
  4503. <td>
  4504. <code>.multiselect('setAllSelectedText', value)</code>
  4505. </td>
  4506. <td>
  4507. <p>
  4508. This method is used to programmatically provide a new text to display in the button when all options are selected, at runtime.
  4509. </p>
  4510. <div class="example">
  4511. <div class="btn-group">
  4512. <script type="text/javascript">
  4513. $(document).ready(function() {
  4514. $('#example-set-all-selected-text').multiselect({allSelectedText: "Initial All Selected"});
  4515. $('#new-all-selected-text-btn').click(function(){
  4516. $('#example-set-all-selected-text').multiselect('setAllSelectedText', $('#new-all-selected-text-box').val());
  4517. });
  4518. });
  4519. </script>
  4520. <select id="example-set-all-selected-text" multiple="multiple">
  4521. <option value="1" selected>Option 1</option>
  4522. </select>
  4523. <input id="new-all-selected-text-box" type="text" class="form-control" placeholder="Enter new text"/>
  4524. <input id="new-all-selected-text-btn" type="button" class="btn btn-default" value="Change All Selected Text"/>
  4525. </div>
  4526. </div>
  4527. <div class="highlight">
  4528. <pre class="prettyprint linenums">
  4529. &lt;script type=&quot;text/javascript&quot;&gt;
  4530. $('#example-set-all-selected-text').multiselect({allSelectedText: "Initial All Selected"});
  4531. $('#new-all-selected-text-btn').click(function(){
  4532. $('#example-set-all-selected-text').multiselect('setAllSelectedText', $('#new-all-selected-text-box').val());
  4533. });
  4534. &lt;/script&gt;
  4535. </pre>
  4536. </div>
  4537. </td>
  4538. </tr>
  4539. </tbody>
  4540. </table>
  4541. <div class="page-header">
  4542. <h2 id="further-examples">Further Examples</h2>
  4543. </div>
  4544. <p>
  4545. Using the <code>onChange</code> configuration option, the following example asks for confirmation if deselecting an option.
  4546. </p>
  4547. <div class="example">
  4548. <script type="text/javascript">
  4549. $(document).ready(function() {
  4550. $('#example-confirmation').multiselect({
  4551. onChange: function(element, checked) {
  4552. if (checked === true) {
  4553. //action taken here if true
  4554. }
  4555. else if (checked === false) {
  4556. if (confirm('Do you wish to deselect the element?')) {
  4557. //action taken here
  4558. }
  4559. else {
  4560. $("#example-confirmation").multiselect('select', element.val());
  4561. }
  4562. }
  4563. }
  4564. });
  4565. });
  4566. </script>
  4567. <select id="example-confirmation" multiple="multiple">
  4568. <option value="1">Option 1</option>
  4569. <option value="2">Option 2</option>
  4570. <option value="3">Option 3</option>
  4571. <option value="4">Option 4</option>
  4572. <option value="5">Option 5</option>
  4573. <option value="6">Option 6</option>
  4574. </select>
  4575. </div>
  4576. <div class="highlight">
  4577. <pre class="prettyprint linenums">
  4578. &lt;script type=&quot;text/javascript&quot;&gt;
  4579. $(document).ready(function() {
  4580. $('#example-confirmation').multiselect({
  4581. onChange: function(element, checked) {
  4582. if (checked === true) {
  4583. //action taken here if true
  4584. }
  4585. else if (checked === false) {
  4586. if (confirm('Do you wish to deselect the element?')) {
  4587. //action taken here
  4588. }
  4589. else {
  4590. $("#example-confirmation").multiselect('select', element.val());
  4591. }
  4592. }
  4593. }
  4594. });
  4595. });
  4596. &lt;/script&gt;
  4597. </pre>
  4598. </div>
  4599. <p>
  4600. The above approach can also be adapted to be used in
  4601. </p>
  4602. <div class="example">
  4603. <script type="text/javascript">
  4604. $(document).ready(function() {
  4605. var lastSelected = $('#example-confirmation-single option:selected').val();
  4606. $('#example-confirmation-single').multiselect({
  4607. onChange: function(element, checked) {
  4608. if (confirm('Do you wish to change the selection?')) {
  4609. lastSelected = element.val();
  4610. }
  4611. else {
  4612. $("#example-confirmation-single").multiselect('select', lastSelected);
  4613. $("#example-confirmation-single").multiselect('deselect', element.val());
  4614. }
  4615. }
  4616. });
  4617. });
  4618. </script>
  4619. <select id="example-confirmation-single">
  4620. <option value="1">Option 1</option>
  4621. <option value="2">Option 2</option>
  4622. <option value="3">Option 3</option>
  4623. <option value="4">Option 4</option>
  4624. <option value="5">Option 5</option>
  4625. <option value="6">Option 6</option>
  4626. </select>
  4627. </div>
  4628. <div class="highlight">
  4629. <pre class="prettyprint linenums">
  4630. &lt;script type=&quot;text/javascript&quot;&gt;
  4631. $(document).ready(function() {
  4632. var lastSelected = $('#example-confirmation-single option:selected').val();
  4633. $('#example-confirmation-single').multiselect({
  4634. onChange: function(element, checked) {
  4635. if (confirm('Do you wish to change the selection?')) {
  4636. lastSelected = element.val();
  4637. }
  4638. else {
  4639. $(&quot;#example-confirmation-single&quot;).multiselect('select', lastSelected);
  4640. $(&quot;#example-confirmation-single&quot;).multiselect('deselect', element.val());
  4641. }
  4642. }
  4643. });
  4644. });
  4645. &lt;/script&gt;
  4646. </pre>
  4647. </div>
  4648. <p>
  4649. Limit the number of selected options using the <code>onChange</code> option. The user may only select a maximum of 4 options. Then all other options are disabled.
  4650. </p>
  4651. <div class="example">
  4652. <script type="text/javascript">
  4653. $(document).ready(function() {
  4654. $('#example-limit').multiselect({
  4655. onChange: function(option, checked) {
  4656. // Get selected options.
  4657. var selectedOptions = $('#example-limit option:selected');
  4658. if (selectedOptions.length >= 4) {
  4659. // Disable all other checkboxes.
  4660. var nonSelectedOptions = $('#example-limit option').filter(function() {
  4661. return !$(this).is(':selected');
  4662. });
  4663. nonSelectedOptions.each(function() {
  4664. var input = $('input[value="' + $(this).val() + '"]');
  4665. input.prop('disabled', true);
  4666. input.parent('li').addClass('disabled');
  4667. });
  4668. }
  4669. else {
  4670. // Enable all checkboxes.
  4671. $('#example-limit option').each(function() {
  4672. var input = $('input[value="' + $(this).val() + '"]');
  4673. input.prop('disabled', false);
  4674. input.parent('li').addClass('disabled');
  4675. });
  4676. }
  4677. }
  4678. });
  4679. });
  4680. </script>
  4681. <select id="example-limit" multiple="multiple">
  4682. <option value="1">Option 1</option>
  4683. <option value="2">Option 2</option>
  4684. <option value="3">Option 3</option>
  4685. <option value="4">Option 4</option>
  4686. <option value="5">Option 5</option>
  4687. <option value="6">Option 6</option>
  4688. </select>
  4689. </div>
  4690. <div class="highlight">
  4691. <pre class="prettyprint linenums">
  4692. &lt;script type=&quot;text/javascript&quot;&gt;
  4693. $(document).ready(function() {
  4694. $('#example-limit').multiselect({
  4695. onChange: function(option, checked) {
  4696. // Get selected options.
  4697. var selectedOptions = $('#example-limit option:selected');
  4698. if (selectedOptions.length >= 4) {
  4699. // Disable all other checkboxes.
  4700. var nonSelectedOptions = $('#example-limit option').filter(function() {
  4701. return !$(this).is(':selected');
  4702. });
  4703. nonSelectedOptions.each(function() {
  4704. var input = $('input[value="' + $(this).val() + '"]');
  4705. input.prop('disabled', true);
  4706. input.parent('li').addClass('disabled');
  4707. });
  4708. }
  4709. else {
  4710. // Enable all checkboxes.
  4711. $('#example-limit option').each(function() {
  4712. var input = $('input[value="' + $(this).val() + '"]');
  4713. input.prop('disabled', false);
  4714. input.parent('li').addClass('disabled');
  4715. });
  4716. }
  4717. }
  4718. });
  4719. });
  4720. &lt;/script&gt;
  4721. </pre>
  4722. </div>
  4723. <p>
  4724. Record the order the options are selected. When selecting an item an ordering number will be incremented and saved within the option.
  4725. </p>
  4726. <div class="example">
  4727. <script type="text/javascript">
  4728. $(document).ready(function() {
  4729. var orderCount = 0;
  4730. $('#example-order').multiselect({
  4731. onChange: function(option, checked) {
  4732. if (checked) {
  4733. orderCount++;
  4734. $(option).data('order', orderCount);
  4735. }
  4736. else {
  4737. $(option).data('order', '');
  4738. }
  4739. },
  4740. buttonText: function(options) {
  4741. if (options.length === 0) {
  4742. return 'None selected';
  4743. }
  4744. else if (options.length > 3) {
  4745. return options.length + ' selected';
  4746. }
  4747. else {
  4748. var selected = [];
  4749. options.each(function() {
  4750. selected.push([$(this).text(), $(this).data('order')]);
  4751. });
  4752. selected.sort(function(a, b) {
  4753. return a[1] - b[1];
  4754. });
  4755. var text = '';
  4756. for (var i = 0; i < selected.length; i++) {
  4757. text += selected[i][0] + ', ';
  4758. }
  4759. return text.substr(0, text.length -2);
  4760. }
  4761. }
  4762. });
  4763. $('#example-order-button').on('click', function() {
  4764. var selected = [];
  4765. $('#example-order option:selected').each(function() {
  4766. selected.push([$(this).val(), $(this).data('order')]);
  4767. });
  4768. selected.sort(function(a, b) {
  4769. return a[1] - b[1];
  4770. });
  4771. var text = '';
  4772. for (var i = 0; i < selected.length; i++) {
  4773. text += selected[i][0] + ', ';
  4774. }
  4775. text = text.substring(0, text.length - 2);
  4776. alert(text);
  4777. });
  4778. });
  4779. </script>
  4780. <div class="btn-group">
  4781. <select id="example-order" multiple="multiple">
  4782. <option value="1">Option 1</option>
  4783. <option value="2">Option 2</option>
  4784. <option value="3">Option 3</option>
  4785. <option value="4">Option 4</option>
  4786. <option value="5">Option 5</option>
  4787. <option value="6">Option 6</option>
  4788. </select>
  4789. <button id="example-order-button" class="btn btn-primary">Order</button>
  4790. </div>
  4791. </div>
  4792. <div class="highlight">
  4793. <pre class="prettyprint linenums">
  4794. &lt;script type=&quot;text/javascript&quot;&gt;
  4795. $(document).ready(function() {
  4796. var orderCount = 0;
  4797. $('#example-order').multiselect({
  4798. onChange: function(option, checked) {
  4799. if (checked) {
  4800. orderCount++;
  4801. $(option).data('order', orderCount);
  4802. }
  4803. else {
  4804. $(option).data('order', '');
  4805. }
  4806. },
  4807. buttonText: function(options) {
  4808. if (options.length === 0) {
  4809. return 'None selected';
  4810. }
  4811. else if (options.length > 3) {
  4812. return options.length + ' selected';
  4813. }
  4814. else {
  4815. var selected = [];
  4816. options.each(function() {
  4817. selected.push([$(this).text(), $(this).data('order')]);
  4818. });
  4819. selected.sort(function(a, b) {
  4820. return a[1] - b[1];
  4821. });
  4822. var text = '';
  4823. for (var i = 0; i < selected.length; i++) {
  4824. text += selected[i][0] + ', ';
  4825. }
  4826. return text.substr(0, text.length -2);
  4827. }
  4828. },
  4829. });
  4830. $('#example-order-button').on('click', function() {
  4831. var selected = [];
  4832. $('#example-order option:selected').each(function() {
  4833. selected.push([$(this).val(), $(this).data('order')]);
  4834. });
  4835. selected.sort(function(a, b) {
  4836. return a[1] - b[1];
  4837. });
  4838. var text = '';
  4839. for (var i = 0; i < selected.length; i++) {
  4840. text += selected[i][0] + ', ';
  4841. }
  4842. text = text.substring(0, text.length - 2);
  4843. alert(text);
  4844. });
  4845. });
  4846. &lt;/script&gt;
  4847. </pre>
  4848. </div>
  4849. <p>
  4850. Simulate single selections using checkboxes. The behavior will be similar to a multiselect with radio buttons except that the selected option can be deselected again.
  4851. </p>
  4852. <div class="example">
  4853. <script type="text/javascript">
  4854. $(document).ready(function() {
  4855. $('#example-simulate-single').multiselect({
  4856. onChange: function(option, checked) {
  4857. var values = [];
  4858. $('#example-simulate-single option').each(function() {
  4859. if ($(this).val() !== option.val()) {
  4860. values.push($(this).val());
  4861. }
  4862. });
  4863. $('#example-simulate-single').multiselect('deselect', values);
  4864. }
  4865. });
  4866. });
  4867. </script>
  4868. <select id="example-simulate-single" multiple="multiple">
  4869. <option value="1">Option 1</option>
  4870. <option value="2">Option 2</option>
  4871. <option value="3">Option 3</option>
  4872. <option value="4">Option 4</option>
  4873. <option value="5">Option 5</option>
  4874. <option value="6">Option 6</option>
  4875. </select>
  4876. </div>
  4877. <div class="highlight">
  4878. <pre class="prettyprint linenums">
  4879. &lt;script type=&quot;text/javascript&quot;&gt;
  4880. $(document).ready(function() {
  4881. $('#example-simulate-single').multiselect({
  4882. on: {
  4883. change: function(option, checked) {
  4884. var values = [];
  4885. $('#example-simulate-single option').each(function() {
  4886. if ($(this).val() !== option.val()) {
  4887. values.push($(this).val());
  4888. }
  4889. });
  4890. $('#example-simulate-single').multiselect('deselect', values);
  4891. }
  4892. }
  4893. });
  4894. });
  4895. &lt;/script&gt;
  4896. </pre>
  4897. </div>
  4898. <p>
  4899. Using a reset button together with a multiselect.
  4900. </p>
  4901. <div class="example">
  4902. <script type="text/javascript">
  4903. $(document).ready(function() {
  4904. $('#example-reset').multiselect();
  4905. $('#example-reset-form').on('reset', function() {
  4906. $('#example-reset option:selected').each(function() {
  4907. $(this).prop('selected', false);
  4908. })
  4909. $('#example-reset').multiselect('refresh');
  4910. });
  4911. });
  4912. </script>
  4913. <form class="btn-group" id="example-reset-form">
  4914. <div class="btn-group">
  4915. <select id="example-reset" multiple="multiple">
  4916. <option value="1">Option 1</option>
  4917. <option value="2">Option 2</option>
  4918. <option value="3">Option 3</option>
  4919. <option value="4">Option 4</option>
  4920. <option value="5">Option 5</option>
  4921. <option value="6">Option 6</option>
  4922. </select>
  4923. <button type="reset" id="example-reset-button" class="btn btn-default">Reset</button>
  4924. </div>
  4925. </form>
  4926. </div>
  4927. <div class="highlight">
  4928. <pre class="prettyprint linenums">
  4929. &lt;script type=&quot;text/javascript&quot;&gt;
  4930. $(document).ready(function() {
  4931. $('#example-reset').multiselect();
  4932. $('#example-reset-form').on('reset', function() {
  4933. $('#example-reset option:selected').each(function() {
  4934. $(this).prop('selected', false);
  4935. })
  4936. $('#example-reset').multiselect('refresh');
  4937. });
  4938. });
  4939. &lt;/script&gt;
  4940. &lt;form class=&quot;btn-group&quot; id=&quot;example-reset-form&quot;&gt;
  4941. &lt;div class=&quot;btn-group&quot;&gt;
  4942. &lt;select id=&quot;example-reset&quot; multiple=&quot;multiple&quot;&gt;
  4943. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  4944. &lt;option value=&quot;2&quot;&gt;Option 2&lt;/option&gt;
  4945. &lt;option value=&quot;3&quot;&gt;Option 3&lt;/option&gt;
  4946. &lt;option value=&quot;4&quot;&gt;Option 4&lt;/option&gt;
  4947. &lt;option value=&quot;5&quot;&gt;Option 5&lt;/option&gt;
  4948. &lt;option value=&quot;6&quot;&gt;Option 6&lt;/option&gt;
  4949. &lt;/select&gt;
  4950. &lt;button type=&quot;reset&quot; id=&quot;example-reset-button&quot; class=&quot;btn btn-default&quot;&gt;Reset&lt;/button&gt;
  4951. &lt;/div&gt;
  4952. &lt;/form&gt;
  4953. </pre>
  4954. </div>
  4955. <p>
  4956. Multiselect can also be used in modals:
  4957. </p>
  4958. <div class="example">
  4959. <script type="text/javascript">
  4960. $(document).ready(function() {
  4961. $('#example-modal').multiselect();
  4962. });
  4963. </script>
  4964. <button class="btn btn-default" data-toggle="modal" data-target="#example-modal-modal">Launch modal</button>
  4965. <div class="modal fade" id="example-modal-modal">
  4966. <div class="modal-dialog">
  4967. <div class="modal-content">
  4968. <div class="modal-header">
  4969. <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
  4970. <h4 class="modal-title">Bootstrap Multiselect</h4>
  4971. </div>
  4972. <div class="modal-body">
  4973. <select id="example-modal" multiple="multiple">
  4974. <option value="1">Option 1</option>
  4975. <option value="2">Option 2</option>
  4976. <option value="3">Option 3</option>
  4977. <option value="4">Option 4</option>
  4978. <option value="5">Option 5</option>
  4979. <option value="6">Option 6</option>
  4980. </select>
  4981. </div>
  4982. </div>
  4983. </div>
  4984. </div>
  4985. </div>
  4986. <div class="highlight">
  4987. <pre class="prettyprint linenums">
  4988. &lt;script type=&quot;text/javascript&quot;&gt;
  4989. $(document).ready(function() {
  4990. $('#example-modal').multiselect();
  4991. });
  4992. &lt;/script&gt;
  4993. &lt;button class=&quot;btn btn-default&quot; data-toggle=&quot;modal&quot; data-target=&quot;#example-modal-modal&quot;&gt;Launch modal&lt;/button&gt;
  4994. &lt;div class=&quot;modal fade&quot; id=&quot;example-modal-modal&quot;&gt;
  4995. &lt;div class=&quot;modal-dialog&quot;&gt;
  4996. &lt;div class=&quot;modal-content&quot;&gt;
  4997. &lt;div class=&quot;modal-header&quot;&gt;
  4998. &lt;button type=&quot;button&quot; class=&quot;close&quot; data-dismiss=&quot;modal&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&times;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Close&lt;/span&gt;&lt;/button&gt;
  4999. &lt;h4 class=&quot;modal-title&quot;&gt;Bootstrap Multiselect&lt;/h4&gt;
  5000. &lt;/div&gt;
  5001. &lt;div class=&quot;modal-body&quot;&gt;
  5002. &lt;select id=&quot;example-modal&quot; multiple=&quot;multiple&quot;&gt;
  5003. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  5004. &lt;option value=&quot;2&quot;&gt;Option 2&lt;/option&gt;
  5005. &lt;option value=&quot;3&quot;&gt;Option 3&lt;/option&gt;
  5006. &lt;option value=&quot;4&quot;&gt;Option 4&lt;/option&gt;
  5007. &lt;option value=&quot;5&quot;&gt;Option 5&lt;/option&gt;
  5008. &lt;option value=&quot;6&quot;&gt;Option 6&lt;/option&gt;
  5009. &lt;/select&gt;
  5010. &lt;/div&gt;
  5011. &lt;/div&gt;
  5012. &lt;/div&gt;
  5013. &lt;/div&gt;
  5014. </pre>
  5015. </div>
  5016. <p>
  5017. An example of using multiselect in an accordion/collapse:
  5018. </p>
  5019. <p class="alert alert-info">
  5020. Note that the overflow of the <code>.panel</code> needs to be visible: <code>style="overflow:visible;"</code>. See the example below.
  5021. </p>
  5022. <div class="example">
  5023. <script type="text/javascript">
  5024. $(document).ready(function() {
  5025. $('#example-collapse').multiselect();
  5026. });
  5027. </script>
  5028. <div class="panel-group" id="example-collapse-accordion">
  5029. <div class="panel panel-default" style="overflow:visible;">
  5030. <div class="panel-heading">
  5031. <h4 class="panel-title">
  5032. <a data-toggle="collapse" data-parent="#example-collapse-accordion" href="#example-collapse-accordion-one">
  5033. Bootstrap Multiselect
  5034. </a>
  5035. </h4>
  5036. </div>
  5037. <div id="example-collapse-accordion-one" class="panel-collapse collapse in">
  5038. <div class="panel-body">
  5039. <select id="example-collapse" multiple="multiple">
  5040. <option value="1">Option 1</option>
  5041. <option value="2">Option 2</option>
  5042. <option value="3">Option 3</option>
  5043. <option value="4">Option 4</option>
  5044. <option value="5">Option 5</option>
  5045. <option value="6">Option 6</option>
  5046. </select>
  5047. </div>
  5048. </div>
  5049. </div>
  5050. </div>
  5051. </div>
  5052. <div class="highlight">
  5053. <pre class="prettyprint linenums">
  5054. &lt;script type=&quot;text/javascript&quot;&gt;
  5055. $(document).ready(function() {
  5056. $('#example-collapse').multiselect();
  5057. });
  5058. &lt;/script&gt;
  5059. &lt;div class=&quot;panel-group&quot; id=&quot;example-collapse-accordion&quot;&gt;
  5060. &lt;div class=&quot;panel panel-default&quot; style=&quot;overflow:visible;&quot;&gt;
  5061. &lt;div class=&quot;panel-heading&quot;&gt;
  5062. &lt;h4 class=&quot;panel-title&quot;&gt;
  5063. &lt;a data-toggle=&quot;collapse&quot; data-parent=&quot;#example-collapse-accordion&quot; href=&quot;#example-collapse-accordion-one&quot;&gt;
  5064. Bootstrap Multiselect
  5065. &lt;/a&gt;
  5066. &lt;/h4&gt;
  5067. &lt;/div&gt;
  5068. &lt;div id=&quot;example-collapse-accordion-one&quot; class=&quot;panel-collapse collapse in&quot;&gt;
  5069. &lt;div class=&quot;panel-body&quot;&gt;
  5070. &lt;select id=&quot;example-collapse&quot; multiple=&quot;multiple&quot;&gt;
  5071. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  5072. &lt;option value=&quot;2&quot;&gt;Option 2&lt;/option&gt;
  5073. &lt;option value=&quot;3&quot;&gt;Option 3&lt;/option&gt;
  5074. &lt;option value=&quot;4&quot;&gt;Option 4&lt;/option&gt;
  5075. &lt;option value=&quot;5&quot;&gt;Option 5&lt;/option&gt;
  5076. &lt;option value=&quot;6&quot;&gt;Option 6&lt;/option&gt;
  5077. &lt;/select&gt;
  5078. &lt;/div&gt;
  5079. &lt;/div&gt;
  5080. &lt;/div&gt;
  5081. &lt;/div&gt;
  5082. </pre>
  5083. </div>
  5084. <p>
  5085. The examples below are aimed to demonstrate the performance of several features when using a large number of options:
  5086. </p>
  5087. <ul>
  5088. <li>Using the select all option, <code>includeSelectAllOption</code> set to <code>true</code>.</li>
  5089. <li>Additionally using a filter, <code>enableFiltering</code> set to <code>true</code>.</li>
  5090. <li>Additionally using <code>enableClickableOptGroups</code>.</li>
  5091. <li>Resetting the multiselect.</li>
  5092. </ul>
  5093. <p class="alert alert-warning">
  5094. The below examples need to be activated. <b>Note that this may take some time!</b><br>
  5095. </p>
  5096. <p class="alert alert-info">
  5097. Use <input type="text" id="example-large-options" value="1000" style="width: 50px;margin: 0px 4px;"/> options: <button id="example-large-enable" class="btn btn-primary">Enable Examples</button>
  5098. </p>
  5099. <div id="example-large-error">
  5100. </div>
  5101. <div class="example">
  5102. <script type="text/javascript">
  5103. $(document).ready(function() {
  5104. $('#example-large-enable').on('click', function() {
  5105. var options = $('#example-large-options').val();
  5106. if (options < 1 || options > 5000) {
  5107. $('#example-large-error').html('<p class="alert alert-error">Choose between 1 and 5000 options!</p>');
  5108. }
  5109. else {
  5110. $('#example-large-includeSelectAllOption').html('');
  5111. $('#example-large-includeSelectAllOption-enableFiltering').html('');
  5112. $('#example-large-includeSelectAllOption-enableFiltering-enableClickableOptGroups').html('');
  5113. $('#example-large-reset').html('');
  5114. for (var j = 0; j < options; j++) {
  5115. i = j + 1;
  5116. $('#example-large-includeSelectAllOption').append('<option value="' + i.toString() + '">Option ' + i.toString() + '</option>');
  5117. $('#example-large-includeSelectAllOption-enableFiltering').append('<option value="' + i.toString() + '">Option ' + i.toString() + '</option>');
  5118. var group = Math.floor(j/10) + 1;
  5119. var number = j % 10 + 1;
  5120. if (number === 1) {
  5121. $('#example-large-includeSelectAllOption-enableFiltering-enableClickableOptGroups').append('<optgroup label="Group ' + group.toString() + '"></optgroup>');
  5122. }
  5123. $('#example-large-includeSelectAllOption-enableFiltering-enableClickableOptGroups').append('<option value="' + group.toString() + '-' + number.toString() + '">Option ' + group.toString() + '.' + number.toString() + '</option>');
  5124. $('#example-large-reset').append('<option value="' + i.toString() + '">Option ' + i.toString() + '</option>');
  5125. }
  5126. $('#example-large-includeSelectAllOption').multiselect({
  5127. maxHeight: 200,
  5128. includeSelectAllOption: true
  5129. });
  5130. $('#example-large-includeSelectAllOption-enableFiltering').multiselect({
  5131. maxHeight: 200,
  5132. includeSelectAllOption: true,
  5133. enableFiltering: true
  5134. });
  5135. $('#example-large-includeSelectAllOption-enableFiltering-enableClickableOptGroups').multiselect({
  5136. maxHeight: 200,
  5137. includeSelectAllOption: true,
  5138. enableFiltering: true,
  5139. enableClickableOptGroups: true
  5140. });
  5141. $('#example-large-reset').multiselect({
  5142. maxHeight: 200,
  5143. includeSelectAllOption: true
  5144. });
  5145. $('#example-large-reset-form').on('reset', function() {
  5146. $('#example-large-reset').multiselect('deselectAll', false);
  5147. $('#example-large-reset').multiselect('updateButtonText');
  5148. });
  5149. }
  5150. });
  5151. });
  5152. </script>
  5153. <div class="btn-toolbar" style="margin-bottom:12px;">
  5154. <div class="btn-group">
  5155. <select id="example-large-includeSelectAllOption" multiple="multiple">
  5156. <option value="1">Option 1</option>
  5157. </select>
  5158. </div>
  5159. </div>
  5160. <div class="btn-toolbar" style="margin-bottom:12px;">
  5161. <div class="btn-group">
  5162. <select id="example-large-includeSelectAllOption-enableFiltering" multiple="multiple">
  5163. <option value="1">Option 1</option>
  5164. </select>
  5165. </div>
  5166. </div>
  5167. <div class="btn-toolbar" style="margin-bottom:12px;">
  5168. <div class="btn-group">
  5169. <select id="example-large-includeSelectAllOption-enableFiltering-enableClickableOptGroups" multiple="multiple">
  5170. <option value="1">Option 1</option>
  5171. </select>
  5172. </div>
  5173. </div>
  5174. <form id="example-large-reset-form" style="margin-bottom:12px;">
  5175. <div class="btn-group">
  5176. <select id="example-large-reset" multiple="multiple">
  5177. <option value="1">Option 1</option>
  5178. </select>
  5179. <button type="reset" class="btn btn-default">Reset</button>
  5180. </div>
  5181. </form>
  5182. </div>
  5183. <div class="highlight">
  5184. <pre class="prettyprint linenums">
  5185. &lt;script type=&quot;text/javascript&quot;&gt;
  5186. $(document).ready(function() {
  5187. $('#example-large-enable').on('click', function() {
  5188. var options = $('#example-large-options').val();
  5189. if (options &lt; 1 || options &gt; 5000) {
  5190. $('#example-large-error').html('&lt;p class=&quot;alert alert-error&quot;&gt;Choose between 1 and 5000 options!&lt;/p&gt;');
  5191. }
  5192. else {
  5193. $('#example-large-includeSelectAllOption').html('');
  5194. $('#example-large-includeSelectAllOption-enableFiltering').html('');
  5195. $('#example-large-includeSelectAllOption-enableFiltering-enableClickableOptGroups').html('');
  5196. $('#example-large-reset').html('');
  5197. for (var j = 0; j &lt; options; j++) {
  5198. i = j + 1;
  5199. $('#example-large-includeSelectAllOption').append('&lt;option value=&quot;' + i.toString() + '&quot;&gt;Option ' + i.toString() + '&lt;/option&gt;');
  5200. $('#example-large-includeSelectAllOption-enableFiltering').append('&lt;option value=&quot;' + i.toString() + '&quot;&gt;Option ' + i.toString() + '&lt;/option&gt;');
  5201. var group = Math.floor(j/10) + 1;
  5202. var number = j % 10 + 1;
  5203. if (number === 1) {
  5204. $('#example-large-includeSelectAllOption-enableFiltering-enableClickableOptGroups').append('&lt;optgroup label=&quot;Group ' + group.toString() + '&quot;&gt;&lt;/optgroup&gt;');
  5205. }
  5206. $('#example-large-includeSelectAllOption-enableFiltering-enableClickableOptGroups').append('&lt;option value=&quot;' + group.toString() + '-' + number.toString() + '&quot;&gt;Option ' + group.toString() + '.' + number.toString() + '&lt;/option&gt;');
  5207. $('#example-large-reset').append('&lt;option value=&quot;' + i.toString() + '&quot;&gt;Option ' + i.toString() + '&lt;/option&gt;');
  5208. }
  5209. $('#example-large-includeSelectAllOption').multiselect({
  5210. maxHeight: 200,
  5211. includeSelectAllOption: true
  5212. });
  5213. $('#example-large-includeSelectAllOption-enableFiltering').multiselect({
  5214. maxHeight: 200,
  5215. includeSelectAllOption: true,
  5216. enableFiltering: true
  5217. });
  5218. $('#example-large-includeSelectAllOption-enableFiltering-enableClickableOptGroups').multiselect({
  5219. maxHeight: 200,
  5220. includeSelectAllOption: true,
  5221. enableFiltering: true,
  5222. enableClickableOptGroups: true
  5223. });
  5224. $('#example-large-reset').multiselect({
  5225. maxHeight: 200,
  5226. includeSelectAllOption: true
  5227. });
  5228. $('#example-large-reset-form').on('reset', function() {
  5229. $('#example-large-reset').multiselect('deselectAll', false);
  5230. $('#example-large-reset').multiselect('updateButtonText');
  5231. });
  5232. }
  5233. });
  5234. });
  5235. &lt;/script&gt;
  5236. &lt;div class=&quot;btn-toolbar&quot; style=&quot;margin-bottom:12px;&quot;&gt;
  5237. &lt;div class=&quot;btn-group&quot;&gt;
  5238. &lt;select id=&quot;example-large-includeSelectAllOption&quot; multiple=&quot;multiple&quot;&gt;
  5239. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  5240. &lt;/select&gt;
  5241. &lt;/div&gt;
  5242. &lt;/div&gt;
  5243. &lt;div class=&quot;btn-toolbar&quot; style=&quot;margin-bottom:12px;&quot;&gt;
  5244. &lt;div class=&quot;btn-group&quot;&gt;
  5245. &lt;select id=&quot;example-large-includeSelectAllOption-enableFiltering&quot; multiple=&quot;multiple&quot;&gt;
  5246. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  5247. &lt;/select&gt;
  5248. &lt;/div&gt;
  5249. &lt;/div&gt;
  5250. &lt;div class=&quot;btn-toolbar&quot; style=&quot;margin-bottom:12px;&quot;&gt;
  5251. &lt;div class=&quot;btn-group&quot;&gt;
  5252. &lt;select id=&quot;example-large-includeSelectAllOption-enableFiltering-enableClickableOptGroups&quot; multiple=&quot;multiple&quot;&gt;
  5253. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  5254. &lt;/select&gt;
  5255. &lt;/div&gt;
  5256. &lt;/div&gt;
  5257. &lt;form id=&quot;example-large-reset-form&quot; style=&quot;margin-bottom:12px;&quot;&gt;
  5258. &lt;div class=&quot;btn-group&quot;&gt;
  5259. &lt;select id=&quot;example-large-reset&quot; multiple=&quot;multiple&quot;&gt;
  5260. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  5261. &lt;/select&gt;
  5262. &lt;button type=&quot;reset&quot; class=&quot;btn btn-default&quot;&gt;Reset&lt;/button&gt;
  5263. &lt;/div&gt;
  5264. &lt;/form&gt;
  5265. </pre>
  5266. </div>
  5267. <p>The following examples is aimed to demonstrate the performance of the <code>.multiselect('dataprovider', data)</code> for a large number of options.</p>
  5268. <p class="alert alert-warning">The below examples need to be activated. <b>Note that this may take some time!</b></p>
  5269. <p class="alert alert-info"><button id="example-large-dataprovider-button" class="btn btn-primary">Activate</button></p>
  5270. <div class="example">
  5271. <script type="text/javascript">
  5272. $(document).ready(function() {
  5273. var data = [];
  5274. for (var i = 0; i < 100; i++) {
  5275. var group = {label: 'Group ' + (i + 1), children: []};
  5276. for (var j = 0; j < 10; j++) {
  5277. group['children'].push({
  5278. label: 'Option ' + (i + 1) + '.' + (j + 1),
  5279. value: i + '-' + j
  5280. });
  5281. }
  5282. data.push(group);
  5283. }
  5284. $('#example-large-dataprovider-button').on('click', function() {
  5285. $('#example-large-dataprovider').multiselect({
  5286. maxHeight: 200
  5287. });
  5288. $('#example-large-dataprovider').multiselect('dataprovider', data);
  5289. });
  5290. });
  5291. </script>
  5292. <select id="example-large-dataprovider" multiple="multiple"></select>
  5293. </div>
  5294. <div class="highlight">
  5295. <pre class="prettyprint linenums">
  5296. $(document).ready(function() {
  5297. var data = [];
  5298. for (var i = 0; i < 100; i++) {
  5299. var group = {label: 'Group ' + (i + 1), children: []};
  5300. for (var j = 0; j < 10; j++) {
  5301. group['children'].push({
  5302. label: 'Option ' + (i + 1) + '.' + (j + 1),
  5303. value: i + '-' + j
  5304. });
  5305. }
  5306. data.push(group);
  5307. }
  5308. $('#example-large-dataprovider-button').on('click', function() {
  5309. $('#example-large-dataprovider').multiselect({
  5310. maxHeight: 200
  5311. });
  5312. $('#example-large-dataprovider').multiselect('dataprovider', data);
  5313. });
  5314. });
  5315. &lt;p class=&quot;alert alert-info&quot;&gt;&lt;button id=&quot;example-large-dataprovider-button&quot; class=&quot;btn btn-primary&quot;&gt;Activate&lt;/button&gt;&lt;/p&gt;
  5316. &lt;select id=&quot;example-large-dataprovider&quot; multiple=&quot;multiple&quot;&gt;&lt;/select&gt;
  5317. </pre>
  5318. <p>
  5319. The following example illsutrates how to disable options using JavaScript.
  5320. </p>
  5321. <div class="example">
  5322. <script type="text/javascript">
  5323. $(document).ready(function() {
  5324. $('#example-disable-javascript').multiselect({
  5325. includeSelectAllOption: true
  5326. });
  5327. $('#example-disable-javascript-disable').on('click', function() {
  5328. var input = $('#example-disable-javascript-container input[value="3"]');
  5329. var option = $('#example-disable-javascript-container option[value="3"]');
  5330. input.prop('disabled', true);
  5331. option.prop('disabled', true);
  5332. input.parent('label').parent('a').parent('li').addClass('disabled');
  5333. });
  5334. $('#example-disable-javascript-check').on('click', function() {
  5335. var options = '';
  5336. $('#example-disable-javascript option:selected').each(function() {
  5337. options += $(this).val() + ', ';
  5338. });
  5339. alert(options.substr(0, options.length - 2));
  5340. });
  5341. });
  5342. </script>
  5343. <div class="btn-group" id="example-disable-javascript-container">
  5344. <select id="example-disable-javascript" multiple="multiple">
  5345. <option value="1">Option 1</option>
  5346. <option value="2">Option 2</option>
  5347. <option value="3">Option 3</option>
  5348. <option value="4">Option 4</option>
  5349. <option value="5">Option 5</option>
  5350. <option value="6">Option 6</option>
  5351. </select>
  5352. <button id="example-disable-javascript-disable" class="btn btn-primary">Disable an option!</button>
  5353. <button id="example-disable-javascript-check" class="btn btn-primary">Check</button>
  5354. </div>
  5355. </div>
  5356. <div class="highlight">
  5357. <pre class="prettyprint linenums">
  5358. $(document).ready(function() {
  5359. $('#example-disable-javascript').multiselect();
  5360. });
  5361. &lt;select id=&quot;example-disable-javascript&quot; multiple=&quot;multiple&quot;&gt;&lt;/select&gt;
  5362. </pre>
  5363. <p>
  5364. Performance example for using <code>.multiselect('refresh')</code> with a large number of options:
  5365. </p>
  5366. <p class="alert alert-warning">The below examples need to be activated. <b>Note that this may take some time!</b></p>
  5367. <p class="alert alert-info"><button id="example-large-refresh-button" class="btn btn-primary">Activate</button></p>
  5368. <div class="example">
  5369. <script type="text/javascript">
  5370. $(document).ready(function() {
  5371. $('#example-large-refresh-button').on('click', function() {
  5372. for (var i = 0; i < 1000; i++) {
  5373. $('#example-large-refresh').append('<option value="' + i + '">Option ' + i + '</option>');
  5374. }
  5375. $('#example-large-refresh').multiselect();
  5376. });
  5377. $('#example-large-refresh-refresh').on('click', function() {
  5378. $('#example-large-refresh').multiselect('refresh');
  5379. });
  5380. $('#example-large-refresh-select').on('click', function() {
  5381. var count = 0;
  5382. $('#example-large-refresh option').each(function() {
  5383. var i = $(this).val();
  5384. if (i%2 == 0) {
  5385. $(this).prop('selected', true);
  5386. count++;
  5387. }
  5388. });
  5389. alert('Selected ' + count + ' options!');
  5390. });
  5391. });
  5392. </script>
  5393. <div class="btn-group">
  5394. <select id="example-large-refresh" multiple="multiple">
  5395. </select>
  5396. <button id="example-large-refresh-select" class="btn btn-default">Select every second option ...</button>
  5397. <button id="example-large-refresh-refresh" class="btn btn-primary">Refresh!</button>
  5398. </div>
  5399. </div>
  5400. <div class="highlight">
  5401. <pre class="prettyprint linenums">
  5402. &lt;script type=&quot;text/javascript&quot;&gt;
  5403. $(document).ready(function() {
  5404. $('#example-large-refresh-button').on('click', function() {
  5405. for (var i = 0; i &lt; 1000; i++) {
  5406. $('#example-large-refresh').append('&lt;option value=&quot;' + i + '&quot;&gt;Option ' + i + '&lt;/option&gt;');
  5407. }
  5408. $('#example-large-refresh').multiselect();
  5409. });
  5410. $('#example-large-refresh-refresh').on('click', function() {
  5411. $('#example-large-refresh').multiselect('refresh');
  5412. });
  5413. $('#example-large-refresh-select').on('click', function() {
  5414. var count = 0;
  5415. $('#example-large-refresh option').each(function() {
  5416. var i = $(this).val();
  5417. if (i%2 == 0) {
  5418. $(this).prop('selected', true);
  5419. count++;
  5420. }
  5421. });
  5422. alert('Selected ' + count + ' options!');
  5423. });
  5424. });
  5425. &lt;/script&gt;
  5426. </pre>
  5427. </div>
  5428. <p>The following example demonstrates how to limit the number of selections of a specific <code>optgroup</code>:</p>
  5429. <div class="example">
  5430. <script type="text/javascript">
  5431. $(document).ready(function() {
  5432. $('#example-optgroup-limit').multiselect({
  5433. onChange: function(options, checked) {
  5434. var $option = $(options);
  5435. if ($option.length == 1) {
  5436. var $group = $option.parent('optgroup')
  5437. if ($group.hasClass('group-1')) {
  5438. var $options = $('option', $group);
  5439. $options = $options.filter(':selected');
  5440. if (checked && $options.length > 2) {
  5441. alert('Cannot select more than 2 elements in this group!');
  5442. $("#example-optgroup-limit").multiselect('deselect', $option.val());
  5443. }
  5444. }
  5445. }
  5446. }
  5447. });
  5448. });
  5449. </script>
  5450. <div class="btn-group">
  5451. <select id="example-optgroup-limit" multiple="multiple">
  5452. <optgroup class="group-1" label="Group 1">
  5453. <option value="1-1">Option 1.1</option>
  5454. <option value="1-2">Option 1.2</option>
  5455. <option value="1-3">Option 1.3</option>
  5456. </optgroup>
  5457. <optgroup class="group-2" label="Group 2">
  5458. <option value="2-1">Option 2.1</option>
  5459. <option value="2-2">Option 2.2</option>
  5460. <option value="2-3">Option 2.3</option>
  5461. </optgroup>
  5462. </select>
  5463. </div>
  5464. </div>
  5465. <div class="highlight">
  5466. <pre class="prettyprint linenums">
  5467. &lt;script type=&quot;text/javascript&quot;&gt;
  5468. $(document).ready(function() {
  5469. $('#example-optgroup-limit').multiselect({
  5470. onChange: function(options, checked) {
  5471. var $option = $(options);
  5472. if ($option.length == 1) {
  5473. var $group = $option.parent('optgroup')
  5474. if ($group.hasClass('group-1')) {
  5475. var $options = $('option', $group);
  5476. $options = $options.filter(':selected');
  5477. if (checked && $options.length &gt; 2) {
  5478. alert('Cannot select more than 2 elements in this group!');
  5479. $(&quot;#example-optgroup-limit&quot;).multiselect('deselect', $option.val());
  5480. }
  5481. }
  5482. }
  5483. }
  5484. });
  5485. });
  5486. &lt;/script&gt;
  5487. &lt;div class=&quot;btn-group&quot;&gt;
  5488. &lt;select id=&quot;example-optgroup-limit&quot; multiple=&quot;multiple&quot;&gt;
  5489. &lt;optgroup class=&quot;group-1&quot; label=&quot;Group 1&quot;&gt;
  5490. &lt;option value=&quot;1-1&quot;&gt;Option 1.1&lt;/option&gt;
  5491. &lt;option value=&quot;1-2&quot;&gt;Option 1.2&lt;/option&gt;
  5492. &lt;option value=&quot;1-3&quot;&gt;Option 1.3&lt;/option&gt;
  5493. &lt;/optgroup&gt;
  5494. &lt;optgroup class=&quot;group-2&quot; label=&quot;Group 2&quot;&gt;
  5495. &lt;option value=&quot;2-1&quot;&gt;Option 2.1&lt;/option&gt;
  5496. &lt;option value=&quot;2-2&quot;&gt;Option 2.2&lt;/option&gt;
  5497. &lt;option value=&quot;2-3&quot;&gt;Option 2.3&lt;/option&gt;
  5498. &lt;/optgroup&gt;
  5499. &lt;/select&gt;
  5500. &lt;/div&gt;
  5501. </pre>
  5502. </div>
  5503. <p>
  5504. The below example demonstrates how to show the <code>optgroup</code>'s label if all <code>option</code>'s within this group are selected:
  5505. </p>
  5506. <div class="example">
  5507. <script type="text/javascript">
  5508. $(document).ready(function() {
  5509. $('#example-optgroup-buttonText').multiselect({
  5510. buttonText: function(options, select) {
  5511. // First consider the simple cases, i.e. disabled and empty.
  5512. if (this.disabledText.length > 0
  5513. && (this.disableIfEmpty || select.prop('disabled'))
  5514. && options.length == 0) {
  5515. return this.disabledText;
  5516. }
  5517. else if (options.length === 0) {
  5518. return this.nonSelectedText;
  5519. }
  5520. var $select = $(select);
  5521. var $optgroups = $('optgroup', $select);
  5522. var delimiter = this.delimiterText;
  5523. var text = '';
  5524. // Go through groups.
  5525. $optgroups.each(function() {
  5526. var $selectedOptions = $('option:selected', this);
  5527. var $options = $('option', this);
  5528. if ($selectedOptions.length == $options.length) {
  5529. text += $(this).attr('label') + delimiter;
  5530. }
  5531. else {
  5532. $selectedOptions.each(function() {
  5533. text += $(this).text() + delimiter;
  5534. });
  5535. }
  5536. });
  5537. var $remainingOptions = $('option:selected', $select).not('optgroup option');
  5538. $remainingOptions.each(function() {
  5539. text += $(this).text() + delimiter;
  5540. });
  5541. return text.substr(0, text.length - 2);
  5542. }
  5543. });
  5544. });
  5545. </script>
  5546. <div class="btn-group">
  5547. <select id="example-optgroup-buttonText" multiple="multiple">
  5548. <optgroup class="group-1" label="Group 1">
  5549. <option value="1-1">Option 1.1</option>
  5550. <option value="1-2">Option 1.2</option>
  5551. <option value="1-3">Option 1.3</option>
  5552. </optgroup>
  5553. <optgroup class="group-2" label="Group 2">
  5554. <option value="2-1">Option 2.1</option>
  5555. <option value="2-2">Option 2.2</option>
  5556. <option value="2-3">Option 2.3</option>
  5557. </optgroup>
  5558. </select>
  5559. </div>
  5560. </div>
  5561. <div class="highlight">
  5562. <pre class="prettyprint linenums">
  5563. &lt;script type=&quot;text/javascript&quot;&gt;
  5564. $(document).ready(function() {
  5565. $('#example-optgroup-buttonText').multiselect({
  5566. buttonText: function(options, select) {
  5567. // First consider the simple cases, i.e. disabled and empty.
  5568. if (this.disabledText.length &gt; 0
  5569. && (this.disableIfEmpty || select.prop('disabled'))
  5570. && options.length == 0) {
  5571. return this.disabledText;
  5572. }
  5573. else if (options.length === 0) {
  5574. return this.nonSelectedText;
  5575. }
  5576. var $select = $(select);
  5577. var $optgroups = $('optgroup', $select);
  5578. var delimiter = this.delimiterText;
  5579. var text = '';
  5580. // Go through groups.
  5581. $optgroups.each(function() {
  5582. var $selectedOptions = $('option:selected', this);
  5583. var $options = $('option', this);
  5584. if ($selectedOptions.length == $options.length) {
  5585. text += $(this).attr('label') + delimiter;
  5586. }
  5587. else {
  5588. $selectedOptions.each(function() {
  5589. text += $(this).text() + delimiter;
  5590. });
  5591. }
  5592. });
  5593. var $remainingOptions = $('option:selected', $select).not('optgroup option');
  5594. $remainingOptions.each(function() {
  5595. text += $(this).text() + delimiter;
  5596. });
  5597. return text.substr(0, text.length - 2);
  5598. }
  5599. });
  5600. });
  5601. &lt;/script&gt;
  5602. &lt;div class=&quot;btn-group&quot;&gt;
  5603. &lt;select id=&quot;example-optgroup-buttonText&quot; multiple=&quot;multiple&quot;&gt;
  5604. &lt;optgroup class=&quot;group-1&quot; label=&quot;Group 1&quot;&gt;
  5605. &lt;option value=&quot;1-1&quot;&gt;Option 1.1&lt;/option&gt;
  5606. &lt;option value=&quot;1-2&quot;&gt;Option 1.2&lt;/option&gt;
  5607. &lt;option value=&quot;1-3&quot;&gt;Option 1.3&lt;/option&gt;
  5608. &lt;/optgroup&gt;
  5609. &lt;optgroup class=&quot;group-2&quot; label=&quot;Group 2&quot;&gt;
  5610. &lt;option value=&quot;2-1&quot;&gt;Option 2.1&lt;/option&gt;
  5611. &lt;option value=&quot;2-2&quot;&gt;Option 2.2&lt;/option&gt;
  5612. &lt;option value=&quot;2-3&quot;&gt;Option 2.3&lt;/option&gt;
  5613. &lt;/optgroup&gt;
  5614. &lt;/select&gt;
  5615. &lt;/div&gt;
  5616. </pre>
  5617. </div>
  5618. <p>The following example demonstrates how to set the class of <code>li.active</code>'s parent elements:</p>
  5619. <div class="example">
  5620. <script type="text/javascript">
  5621. $(document).ready(function() {
  5622. $('#example-selected-parents').multiselect({
  5623. buttonContainer: '<div id="example-selected-parents-container"></div>',
  5624. onChange: function(options, selected) {
  5625. // Get checkbox corresponding to option:
  5626. var value = $(options).val();
  5627. var $input = $('#example-selected-parents-container input[value="' + value + '"]');
  5628. // Adapt label class:
  5629. if (selected) {
  5630. $input.closest('label').addClass('active');
  5631. }
  5632. else {
  5633. $input.closest('label').removeClass('active');
  5634. }
  5635. }
  5636. });
  5637. });
  5638. </script>
  5639. <style type="text/css">
  5640. #example-selected-parents-container label.active {
  5641. font-weight: bold;
  5642. }
  5643. </style>
  5644. <div class="btn-group">
  5645. <select id="example-selected-parents" multiple="multiple">
  5646. <option value="1">Option 1</option>
  5647. <option value="2">Option 2</option>
  5648. <option value="3">Option 3</option>
  5649. <option value="4">Option 4</option>
  5650. <option value="5">Option 5</option>
  5651. <option value="6">Option 6</option>
  5652. </select>
  5653. </div>
  5654. </div>
  5655. <div class="highlight">
  5656. <pre class="prettyprint linenums">
  5657. &lt;script type=&quot;text/javascript&quot;&gt;
  5658. $(document).ready(function() {
  5659. $('#example-selected-parents').multiselect({
  5660. buttonContainer: '&lt;div id=&quot;example-selected-parents-container&quot;&gt;&lt;/div&gt;',
  5661. onChange: function(options, selected) {
  5662. // Get checkbox corresponding to option:
  5663. var value = $(options).val();
  5664. var $input = $('#example-selected-parents-container input[value=&quot;' + value + '&quot;]');
  5665. // Adapt label class:
  5666. if (selected) {
  5667. $input.closest('label').addClass('active');
  5668. }
  5669. else {
  5670. $input.closest('label').removeClass('active');
  5671. }
  5672. }
  5673. });
  5674. });
  5675. &lt;/script&gt;
  5676. &lt;style type=&quot;text/css&quot;&gt;
  5677. #example-selected-parents-container label.active {
  5678. font-weight: bold;
  5679. }
  5680. &lt;/style&gt;
  5681. &lt;div class=&quot;btn-group&quot;&gt;
  5682. &lt;select id=&quot;example-selected-parents&quot; multiple=&quot;multiple&quot;&gt;
  5683. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  5684. &lt;option value=&quot;2&quot;&gt;Option 2&lt;/option&gt;
  5685. &lt;option value=&quot;3&quot;&gt;Option 3&lt;/option&gt;
  5686. &lt;option value=&quot;4&quot;&gt;Option 4&lt;/option&gt;
  5687. &lt;option value=&quot;5&quot;&gt;Option 5&lt;/option&gt;
  5688. &lt;option value=&quot;6&quot;&gt;Option 6&lt;/option&gt;
  5689. &lt;/select&gt;
  5690. &lt;/div&gt;
  5691. </pre>
  5692. </div>
  5693. <p>
  5694. The following example demonstrates how to clear filtering as soon as an option is selected after the filter was used. Note that the filter is cleared both when an option is selected and deselected.
  5695. </p>
  5696. <div class="example">
  5697. <script type="text/javascript">
  5698. $(document).ready(function() {
  5699. $('#example-clear-after-filter-selection').multiselect({
  5700. buttonContainer: '<div id="example-clear-after-filter-selection-container"></div>',
  5701. enableFiltering: true,
  5702. onChange: function($option) {
  5703. // Check if the filter was used.
  5704. var query = $('#example-clear-after-filter-selection-container li.multiselect-filter input').val();
  5705. if (query) {
  5706. $('#example-clear-after-filter-selection-container li.multiselect-filter input').val('').trigger('keydown');
  5707. }
  5708. }
  5709. });
  5710. });
  5711. </script>
  5712. <div class="btn-group">
  5713. <select id="example-clear-after-filter-selection" multiple="multiple">
  5714. <option value="1">Option 1</option>
  5715. <option value="2">Option 2</option>
  5716. <option value="3">Option 3</option>
  5717. <option value="4">Option 4</option>
  5718. <option value="5">Option 5</option>
  5719. <option value="6">Option 6</option>
  5720. </select>
  5721. </div>
  5722. </div>
  5723. <div class="highlight">
  5724. <pre class="prettyprint linenums">
  5725. &lt;script type=&quot;text/javascript&quot;&gt;
  5726. $(document).ready(function() {
  5727. $('#example-clear-after-filter-selection').multiselect({
  5728. buttonContainer: '<div id="example-clear-after-filter-selection-container"></div>',
  5729. enableFiltering: true,
  5730. onChange: function($option) {
  5731. // Check if the filter was used.
  5732. var query = $('#example-clear-after-filter-selection-container li.multiselect-filter input').val();
  5733. if (query) {
  5734. $('#example-clear-after-filter-selection-container li.multiselect-filter input').val('').trigger('keydown');
  5735. }
  5736. }
  5737. });
  5738. });
  5739. &lt;/script&gt;
  5740. </pre>
  5741. </div>
  5742. <p>
  5743. To automatically add the <code>.dropUp</code> class if the element is at the lower edge of the window, use the following snippet:
  5744. </p>
  5745. <div class="example">
  5746. <script type="text/javascript">
  5747. $(document).ready(function() {
  5748. $('#example-automatic-dropup').multiselect({
  5749. buttonContainer: '<div id="example-automatic-dropup-container"></div>',
  5750. maxHeight: 200,
  5751. });
  5752. $(window).scroll(function() {
  5753. var top = $('#example-automatic-dropup-container')[0].getBoundingClientRect().top
  5754. var bottom = $(window).height() - top - $('#example-automatic-dropup-container').height();
  5755. if (bottom < 250) {
  5756. $('#example-automatic-dropup-container').addClass('dropup');
  5757. }
  5758. if (bottom > 250) {
  5759. $('#example-automatic-dropup-container').removeClass('dropup');
  5760. }
  5761. });
  5762. });
  5763. </script>
  5764. <div class="btn-group">
  5765. <select id="example-automatic-dropup" multiple="multiple">
  5766. <option value="1">Option 1</option>
  5767. <option value="2">Option 2</option>
  5768. <option value="3">Option 3</option>
  5769. <option value="4">Option 4</option>
  5770. <option value="5">Option 5</option>
  5771. <option value="6">Option 6</option>
  5772. </select>
  5773. </div>
  5774. </div>
  5775. <div class="highlight">
  5776. <pre class="prettyprint linenums">
  5777. &lt;script type=&quot;text/javascript&quot;&gt;
  5778. $(document).ready(function() {
  5779. $('#example-clear-after-filter-selection').multiselect({
  5780. buttonContainer: '<div id="example-clear-after-filter-selection-container"></div>',
  5781. enableFiltering: true,
  5782. onChange: function($option) {
  5783. // Check if the filter was used.
  5784. var query = $('#example-clear-after-filter-selection-container li.multiselect-filter input').val();
  5785. if (query) {
  5786. $('#example-clear-after-filter-selection-container li.multiselect-filter input').val('').trigger('keydown');
  5787. }
  5788. }
  5789. });
  5790. });
  5791. &lt;/script&gt;
  5792. </pre>
  5793. </div>
  5794. <p>The following example demonstrates how to display a list of checkboxes without a dropdown:</p>
  5795. <div class="example">
  5796. <script type="text/javascript">
  5797. $(document).ready(function() {
  5798. $('#example-checkbox-list').multiselect({
  5799. buttonContainer: '<div id="example-checkbox-list-container"></div>',
  5800. buttonClass: '',
  5801. templates: {
  5802. button: '',
  5803. ul: '<ul class="multiselect-container checkbox-list"></ul>',
  5804. }
  5805. });
  5806. });
  5807. </script>
  5808. <style type="text/css">
  5809. #example-checkbox-list-container .checkbox-list > li > a {
  5810. display: block;
  5811. padding: 3px 0;
  5812. clear: both;
  5813. font-weight: normal;
  5814. line-height: 1.42857143;
  5815. color: #333;
  5816. white-space: nowrap;
  5817. }
  5818. #example-checkbox-list-container .checkbox-list > li > a:hover,
  5819. #example-checkbox-list-container .checkbox-list > li > a:focus {
  5820. color: #333;
  5821. text-decoration: none;
  5822. background-color: transparent;
  5823. }
  5824. #example-checkbox-list-container .checkbox-list > .active > a,
  5825. #example-checkbox-list-container .checkbox-list > .active > a:hover,
  5826. #example-checkbox-list-container .checkbox-list > .active > a:focus {
  5827. color: #333;
  5828. text-decoration: none;
  5829. background-color: transparent;
  5830. outline: 0;
  5831. }
  5832. #example-checkbox-list-container .checkbox-list > .disabled > a,
  5833. #example-checkbox-list-container .checkbox-list > .disabled > a:hover,
  5834. #example-checkbox-list-container .checkbox-list > .disabled > a:focus {
  5835. color: #777;
  5836. }
  5837. #example-checkbox-list-container .checkbox-list > .disabled > a:hover,
  5838. #example-checkbox-list-container .checkbox-list > .disabled > a:focus {
  5839. text-decoration: none;
  5840. cursor: unset;
  5841. background-color: transparent;
  5842. background-image: none;
  5843. filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  5844. }
  5845. #example-checkbox-list-container .checkbox-list > li > a > label {
  5846. padding: 3px 0 3px 20px;
  5847. }
  5848. @media (min-width: 768px) {
  5849. #example-checkbox-list-container .checkbox-list > li {
  5850. float: left;
  5851. width: 33%;
  5852. }
  5853. #example-checkbox-list-container .checkbox-list-vertical > li {
  5854. float: none;
  5855. width: 100%;
  5856. }
  5857. }
  5858. #example-checkbox-list-container .multiselect-container.checkbox-list {
  5859. position: static;
  5860. }
  5861. </style>
  5862. <div class="btn-group">
  5863. <select id="example-checkbox-list" multiple="multiple">
  5864. <option value="1">Option 1</option>
  5865. <option value="2">Option 2</option>
  5866. <option value="3">Option 3</option>
  5867. <option value="4">Option 4</option>
  5868. <option value="5">Option 5</option>
  5869. <option value="6">Option 6</option>
  5870. </select>
  5871. </div>
  5872. </div>
  5873. <div class="highlight">
  5874. <pre class="prettyprint linenums">
  5875. &lt;script type=&quot;text/javascript&quot;&gt;
  5876. $(document).ready(function() {
  5877. $('#example-checkbox-list').multiselect({
  5878. buttonContainer: '&lt;div id=&quot;example-checkbox-list-container&quot;&gt;&lt;/div&gt;',
  5879. buttonClass: '',
  5880. templates: {
  5881. button: '',
  5882. ul: '&lt;ul class=&quot;multiselect-container checkbox-list&quot;&gt;&lt;/ul&gt;',
  5883. }
  5884. });
  5885. });
  5886. &lt;/script&gt;
  5887. &lt;style type=&quot;text/css&quot;&gt;
  5888. #example-checkbox-list-container .checkbox-list &gt; li &gt; a {
  5889. display: block;
  5890. padding: 3px 0;
  5891. clear: both;
  5892. font-weight: normal;
  5893. line-height: 1.42857143;
  5894. color: #333;
  5895. white-space: nowrap;
  5896. }
  5897. #example-checkbox-list-container .checkbox-list &gt; li &gt; a:hover,
  5898. #example-checkbox-list-container .checkbox-list &gt; li &gt; a:focus {
  5899. color: #333;
  5900. text-decoration: none;
  5901. background-color: transparent;
  5902. }
  5903. #example-checkbox-list-container .checkbox-list &gt; .active &gt; a,
  5904. #example-checkbox-list-container .checkbox-list &gt; .active &gt; a:hover,
  5905. #example-checkbox-list-container .checkbox-list &gt; .active &gt; a:focus {
  5906. color: #333;
  5907. text-decoration: none;
  5908. background-color: transparent;
  5909. outline: 0;
  5910. }
  5911. #example-checkbox-list-container .checkbox-list &gt; .disabled &gt; a,
  5912. #example-checkbox-list-container .checkbox-list &gt; .disabled &gt; a:hover,
  5913. #example-checkbox-list-container .checkbox-list &gt; .disabled &gt; a:focus {
  5914. color: #777;
  5915. }
  5916. #example-checkbox-list-container .checkbox-list &gt; .disabled &gt; a:hover,
  5917. #example-checkbox-list-container .checkbox-list &gt; .disabled &gt; a:focus {
  5918. text-decoration: none;
  5919. cursor: unset;
  5920. background-color: transparent;
  5921. background-image: none;
  5922. filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  5923. }
  5924. #example-checkbox-list-container .checkbox-list &gt; li &gt; a &gt; label {
  5925. padding: 3px 0 3px 20px;
  5926. }
  5927. @media (min-width: 768px) {
  5928. #example-checkbox-list-container .checkbox-list &gt; li {
  5929. float: left;
  5930. width: 33%;
  5931. }
  5932. #example-checkbox-list-container .checkbox-list-vertical &gt; li {
  5933. float: none;
  5934. width: 100%;
  5935. }
  5936. }
  5937. #example-checkbox-list-container .multiselect-container.checkbox-list {
  5938. position: static;
  5939. }
  5940. &lt;/style&gt;
  5941. &lt;div class=&quot;btn-group&quot;&gt;
  5942. &lt;select id=&quot;example-checkbox-list&quot; multiple=&quot;multiple&quot;&gt;
  5943. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  5944. &lt;option value=&quot;2&quot;&gt;Option 2&lt;/option&gt;
  5945. &lt;option value=&quot;3&quot;&gt;Option 3&lt;/option&gt;
  5946. &lt;option value=&quot;4&quot;&gt;Option 4&lt;/option&gt;
  5947. &lt;option value=&quot;5&quot;&gt;Option 5&lt;/option&gt;
  5948. &lt;option value=&quot;6&quot;&gt;Option 6&lt;/option&gt;
  5949. &lt;/select&gt;
  5950. &lt;/div&gt;
  5951. </pre>
  5952. </div>
  5953. <div class="page-header">
  5954. <h2 id="post">Server-Side Processing</h2>
  5955. </div>
  5956. <p class="alert alert-warning">
  5957. The below example uses a PHP script to demonstrate Server-Side Processing. Therefore, the below example will not run online - <b>download the repository and try it on a local server</b>.
  5958. </p>
  5959. <p>
  5960. In order to receive the correct data after submitting the form, the used <code>select</code> has to have an appropriate name. Note that an <code>[]</code> needs to be appended to the name when using the <code>multiple</code> option/attribute. Per default, the checkboxes used within the multiselect will not be submitted, however, this can be changed by adapting <code>checkboxName</code>. The select all option as well as the text input used for the filter will not be submitted. As this may be useful, the name of the select all checkbox may be adapted using the <code>selectAllName</code> option. The value of the select all checkbox can be controlled by the <code>selectAllValue</code> option while the values of the remaining checkboxes correspond to the values used by the <code>option</code>'s of the original <code>select</code>.
  5961. </p>
  5962. <p class="alert alert-info">
  5963. The plugin naturally supports the <code>required</code> attribute.
  5964. </p>
  5965. <div class="example">
  5966. <script type="text/javascript">
  5967. $(document).ready(function() {
  5968. $('#example-post').multiselect({
  5969. includeSelectAllOption: true,
  5970. enableFiltering: true
  5971. });
  5972. });
  5973. </script>
  5974. <form class="form-horizontal" method="POST" action="post.php">
  5975. <div class="form-group">
  5976. <label class="col-sm-2 control-label">Multiselect</label>
  5977. <div class="col-sm-10">
  5978. <select id="example-post" name="multiselect[]" multiple="multiple" required>
  5979. <option value="1">Option 1</option>
  5980. <option value="2">Option 2</option>
  5981. <option value="3">Option 3</option>
  5982. <option value="4">Option 4</option>
  5983. <option value="5">Option 5</option>
  5984. <option value="6">Option 6</option>
  5985. </select>
  5986. </div>
  5987. </div>
  5988. <div class="form-group">
  5989. <label class="col-sm-2 control-label">Text Input</label>
  5990. <div class="col-sm-10">
  5991. <input type="text" name="text" class="form-control" placeholder="Text Input" />
  5992. </div>
  5993. </div>
  5994. <div class="form-group">
  5995. <div class="col-sm-offset-2 col-sm-10">
  5996. <div class="checkbox">
  5997. <label>
  5998. <input type="checkbox" name="checkbox"> Checkbox
  5999. </label>
  6000. </div>
  6001. </div>
  6002. </div>
  6003. <div class="form-group">
  6004. <div class="col-sm-offset-2 col-sm-10">
  6005. <div class="radio">
  6006. <label>
  6007. <input type="radio" name="radio"> Radio 1
  6008. </label>
  6009. </div>
  6010. <div class="radio">
  6011. <label>
  6012. <input type="radio" name="radio"> Radio 2
  6013. </label>
  6014. </div>
  6015. </div>
  6016. </div>
  6017. <div class="form-group">
  6018. <div class="col-sm-offset-2 col-sm-10">
  6019. <button type="submit" class="btn btn-default">Submit</button>
  6020. </div>
  6021. </div>
  6022. </form>
  6023. </div>
  6024. <div class="highlight">
  6025. <pre class="prettyprint linenums">
  6026. &lt;script type=&quot;text/javascript&quot;&gt;
  6027. $(document).ready(function() {
  6028. $('#example-post').multiselect({
  6029. includeSelectAllOption: true,
  6030. enableFiltering: true
  6031. });
  6032. });
  6033. &lt;/script&gt;
  6034. &lt;form class=&quot;form-horizontal&quot; method=&quot;POST&quot; action=&quot;post.php&quot;&gt;
  6035. &lt;div class=&quot;form-group&quot;&gt;
  6036. &lt;label class=&quot;col-sm-2 control-label&quot;&gt;Multiselect&lt;/label&gt;
  6037. &lt;div class=&quot;col-sm-10&quot;&gt;
  6038. &lt;select id=&quot;example-post&quot; name=&quot;multiselect[]&quot; multiple=&quot;multiple&quot;&gt;
  6039. &lt;option value=&quot;1&quot;&gt;Option 1&lt;/option&gt;
  6040. &lt;option value=&quot;2&quot;&gt;Option 2&lt;/option&gt;
  6041. &lt;option value=&quot;3&quot;&gt;Option 3&lt;/option&gt;
  6042. &lt;option value=&quot;4&quot;&gt;Option 4&lt;/option&gt;
  6043. &lt;option value=&quot;5&quot;&gt;Option 5&lt;/option&gt;
  6044. &lt;option value=&quot;6&quot;&gt;Option 6&lt;/option&gt;
  6045. &lt;/select&gt;
  6046. &lt;/div&gt;
  6047. &lt;/div&gt;
  6048. &lt;div class=&quot;form-group&quot;&gt;
  6049. &lt;label class=&quot;col-sm-2 control-label&quot;&gt;Text Input&lt;/label&gt;
  6050. &lt;div class=&quot;col-sm-10&quot;&gt;
  6051. &lt;input type=&quot;text&quot; name=&quot;text&quot; class=&quot;form-control&quot; placeholder=&quot;Text Input&quot; /&gt;
  6052. &lt;/div&gt;
  6053. &lt;/div&gt;
  6054. &lt;div class=&quot;form-group&quot;&gt;
  6055. &lt;div class=&quot;col-sm-offset-2 col-sm-10&quot;&gt;
  6056. &lt;div class=&quot;checkbox&quot;&gt;
  6057. &lt;label&gt;
  6058. &lt;input type=&quot;checkbox&quot; name=&quot;checkbox&quot;&gt; Checkbox
  6059. &lt;/label&gt;
  6060. &lt;/div&gt;
  6061. &lt;/div&gt;
  6062. &lt;/div&gt;
  6063. &lt;div class=&quot;form-group&quot;&gt;
  6064. &lt;div class=&quot;col-sm-offset-2 col-sm-10&quot;&gt;
  6065. &lt;div class=&quot;radio&quot;&gt;
  6066. &lt;label&gt;
  6067. &lt;input type=&quot;radio&quot; name=&quot;radio&quot;&gt; Radio 1
  6068. &lt;/label&gt;
  6069. &lt;/div&gt;
  6070. &lt;div class=&quot;radio&quot;&gt;
  6071. &lt;label&gt;
  6072. &lt;input type=&quot;radio&quot; name=&quot;radio&quot;&gt; Radio 2
  6073. &lt;/label&gt;
  6074. &lt;/div&gt;
  6075. &lt;/div&gt;
  6076. &lt;/div&gt;
  6077. &lt;div class=&quot;form-group&quot;&gt;
  6078. &lt;div class=&quot;col-sm-offset-2 col-sm-10&quot;&gt;
  6079. &lt;button type=&quot;submit&quot; class=&quot;btn btn-default&quot;&gt;Submit&lt;/button&gt;
  6080. &lt;/div&gt;
  6081. &lt;/div&gt;
  6082. &lt;/form&gt;
  6083. </pre>
  6084. </div>
  6085. <p>
  6086. The <code>checkboxName</code> option can also be used to assign different names to the <code>option's</code>, for example for different <code>optgroup</code>s.
  6087. </p>
  6088. <p class="alert alert-warning">
  6089. Note that in the below example, <code>$_POST</code> will contain both the <code>multiselect</code> and the <code>group1</code> as well as <code>group2</code> keys.
  6090. </p>
  6091. <div class="example">
  6092. <script type="text/javascript">
  6093. $(document).ready(function() {
  6094. $('#example-post-checkboxName').multiselect({
  6095. checkboxName: function(option) {
  6096. var $optgroup = $(option).closest('optgroup');
  6097. if ($optgroup.id == 'example-post-checkboxName-1') {
  6098. return 'group1[]';
  6099. }
  6100. else {
  6101. return 'group2[]';
  6102. }
  6103. }
  6104. });
  6105. });
  6106. </script>
  6107. <form class="form-horizontal" method="POST" action="post.php">
  6108. <div class="form-group">
  6109. <label class="col-sm-2 control-label">Multiselect</label>
  6110. <div class="col-sm-10">
  6111. <select id="example-post-checkboxName" name="multiselect[]" multiple="multiple" required>
  6112. <optgroup label="Group 1" id="example-post-checkboxName-1">
  6113. <option value="1-1">Option 1.1</option>
  6114. <option value="1-2">Option 1.2</option>
  6115. <option value="1-3">Option 1.3</option>
  6116. </optgroup>
  6117. <optgroup label="Group 1" id="example-post-checkboxName-2">
  6118. <option value="2-1">Option 2.1</option>
  6119. <option value="2-2">Option 2.2</option>
  6120. <option value="2-3">Option 2.3</option>
  6121. </optgroup>
  6122. </select>
  6123. </div>
  6124. </div>
  6125. <div class="form-group">
  6126. <div class="col-sm-offset-2 col-sm-10">
  6127. <button type="submit" class="btn btn-default">Submit</button>
  6128. </div>
  6129. </div>
  6130. </form>
  6131. </div>
  6132. <div class="highlight">
  6133. <pre class="prettyprint linenums">
  6134. &lt;script type=&quot;text/javascript&quot;&gt;
  6135. $(document).ready(function() {
  6136. $('#example-post-checkboxName').multiselect({
  6137. checkboxName: function(option) {
  6138. var $optgroup = $(option).closest('optgroup');
  6139. if ($optgroup.id == 'example-post-checkboxName-1') {
  6140. return 'group1[]';
  6141. }
  6142. else {
  6143. return 'group2[]';
  6144. }
  6145. }
  6146. });
  6147. });
  6148. &lt;/script&gt;
  6149. &lt;form class=&quot;form-horizontal&quot; method=&quot;POST&quot; action=&quot;post.php&quot;&gt;
  6150. &lt;div class=&quot;form-group&quot;&gt;
  6151. &lt;label class=&quot;col-sm-2 control-label&quot;&gt;Multiselect&lt;/label&gt;
  6152. &lt;div class=&quot;col-sm-10&quot;&gt;
  6153. &lt;select id=&quot;example-post-checkboxName&quot; name=&quot;multiselect[]&quot; multiple=&quot;multiple&quot; required&gt;
  6154. &lt;optgroup label=&quot;Group 1&quot; id=&quot;example-post-checkboxName-1&quot;&gt;
  6155. &lt;option value=&quot;1-1&quot;&gt;Option 1.1&lt;/option&gt;
  6156. &lt;option value=&quot;1-2&quot;&gt;Option 1.2&lt;/option&gt;
  6157. &lt;option value=&quot;1-3&quot;&gt;Option 1.3&lt;/option&gt;
  6158. &lt;/optgroup&gt;
  6159. &lt;optgroup label=&quot;Group 1&quot; id=&quot;example-post-checkboxName-2&quot;&gt;
  6160. &lt;option value=&quot;2-1&quot;&gt;Option 2.1&lt;/option&gt;
  6161. &lt;option value=&quot;2-2&quot;&gt;Option 2.2&lt;/option&gt;
  6162. &lt;option value=&quot;2-3&quot;&gt;Option 2.3&lt;/option&gt;
  6163. &lt;/optgroup&gt;
  6164. &lt;/select&gt;
  6165. &lt;/div&gt;
  6166. &lt;/div&gt;
  6167. &lt;div class=&quot;form-group&quot;&gt;
  6168. &lt;div class=&quot;col-sm-offset-2 col-sm-10&quot;&gt;
  6169. &lt;button type=&quot;submit&quot; class=&quot;btn btn-default&quot;&gt;Submit&lt;/button&gt;
  6170. &lt;/div&gt;
  6171. &lt;/div&gt;
  6172. &lt;/form&gt;
  6173. </pre>
  6174. </div>
  6175. <div class="page-header">
  6176. <h2 id="keyboard-support">Keyboard Support</h2>
  6177. </div>
  6178. <table class="table table-striped">
  6179. <tbody>
  6180. <tr>
  6181. <td><code>Tab</code></td>
  6182. <td>As with other form elements, <code>Tab</code> is used to switch to the next form elements. <code>Tab</code> can be used when the dropdown is opened as well as when it is closed.</td>
  6183. </tr>
  6184. <tr>
  6185. <td><code>Enter</code></td>
  6186. <td><code>Enter</code> is used to open the dropdown and select options (for selecting options, <code>Space</code> can be used, as well). After a multiselect is in focus, pressing <code>Enter</code> will open the dropdown. Then, the options can be traversed using arrow up and down.</td>
  6187. </tr>
  6188. <tr>
  6189. <td><code>Arrow Up/Arrow Down</code></td>
  6190. <td>Used to traverse the options after opening the dropdown. An option can be selected using <code>Space</code> or <code>Enter</code>.</td>
  6191. </tr>
  6192. </tbody>
  6193. </table>
  6194. <div class="page-header">
  6195. <h2 id="faq">Frequently Asked Questions</h2>
  6196. </div>
  6197. <dl>
  6198. <div class="alert alert-info">
  6199. <dt id="how-to-contribute">How to contribute?</dt>
  6200. <dd>
  6201. Pull requests to add additional feature or fix known bugs are always welcome! However, to make it easy for me to review and merge your pull request, the following guidelines should be considered:
  6202. <ul>
  6203. <li>Check the <a href="https://github.com/davidstutz/bootstrap-multiselect/issues">Issue Tracker</a> and the <a href="#faq">FAQ</a> before starting to implement a feature or fix.</li>
  6204. <li>Add one pull request per feature/fix. Otherwise, I cannot guarantee that I will merge the pull request.</li>
  6205. <li>Always document your changes. If new features are added, new options or methods should be added to the documentation (<code>index.html</code>) and appropriate examples should be added.</li>
  6206. <li>Add a thorough description to your pull request - yes, I am able to read your code, however, reading your description may speed things up!</li>
  6207. <li>Add comments to your code!</li>
  6208. </ul>
  6209. A full list of contributors can be found <a href="https://github.com/davidstutz/bootstrap-multiselect/graphs/contributors">here</a>.
  6210. </dd>
  6211. </div>
  6212. <dt>How about older browsers as for example Internet Explorer 6, 7 and 8?</dt>
  6213. <dd>
  6214. With version 2.0, jQuery no longer supports the older IE versions. Nevertheless, the plugin should run as expected using the 1.x branch of jQuery. See <a href="http://blog.jquery.com/2013/04/18/jquery-2-0-released/">here</a> for details.
  6215. </dd>
  6216. <dt>May I use the plugin in a commercial project (e.g. a commercial Wordpress/Joomla theme)?</dt>
  6217. <dd>
  6218. The plugin is dual licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License v2.0</a> and the <a href="http://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause License</a>. The BSD 3-Clause License allows to use the plugin in commercial projects as long as all source files associated with this plugin retain the copyright notice.
  6219. </dd>
  6220. <dt>Using <code>return false;</code> within the <code>onChange</code> option does not prevent the option from being selected/deselected ...</dt>
  6221. <dd>
  6222. The <code>return</code> statement within the <code>onChange</code> method has no influence on the result. For preventing an option from being deselected or selected have a look at the examples in the <a href="#further-examples">Further Examples</a> section.
  6223. </dd>
  6224. <dt>How to change the button class depending on the number of selected options?</dt>
  6225. <dd>
  6226. This issue is addressed in <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/332">332</a>.
  6227. </dd>
  6228. <dt>Why does the plugin crash when using <code>.multiselect('select', value);</code> or <code>.multiselect('deselect', value);</code>?</dt>
  6229. <dd>
  6230. This may be caused when the class used for the <code>select</code> occurs for other elements, as well. In addition this may be caused if the multiselect has the class <code>.multiselect</code>. See <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/330">#330</a>.
  6231. </dd>
  6232. <dt>How to check whether filtering all options resulted no options being displayed (except the select all option)?</dt>
  6233. <dd>
  6234. This issue is discussed in <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/317">#317</a>.
  6235. </dd>
  6236. <dt>How to use multiple plugin instances running single selections on one page?</dt>
  6237. <dd>
  6238. There is a minor bug when using multiple plugin instances with single selection on one page. The bug is described here: <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/331">#331</a>. A possible fix is suggested here: <a href="https://github.com/davidstutz/bootstrap-multiselect/pull/336">#336</a>.
  6239. </dd>
  6240. <dt>How to use the plugin within a <code>form.form-inline</code>?</dt>
  6241. <dd>
  6242. This issue is addressed in <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/322">#322</a>
  6243. </dd>
  6244. <dt>Using jQuery, how to get the selected options dynamically?</dt>
  6245. <dd>
  6246. <pre class="linenums prettyprint">
  6247. // get all option elements
  6248. $('#example option:selected');
  6249. // get all option element values
  6250. $('#example option:selected').map(function(a, item){return item.value;});
  6251. </pre>
  6252. </dd>
  6253. <dt>How to get the selected options using PHP?</dt>
  6254. <dd>
  6255. This issue is addressed here: <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/323">https://github.com/davidstutz/bootstrap-multiselect/issues/323</a>. Mainly there are two ways, either add a name to the <code>select</code>:
  6256. <pre class="linenums prettyprint">
  6257. &lt;select id="example2" multiple="multiple" name="select[]"&gt;&lt;/select&gt;
  6258. </pre>
  6259. <p>Or add an appropriate name to the checkboxes:</p>
  6260. <pre class="linenums prettyprint">
  6261. $('#example2').multiselect({
  6262. checkboxName: function(option) {
  6263. return 'multiselect[]';
  6264. }
  6265. });
  6266. </pre>
  6267. </dd>
  6268. <dt>Why does the plugin not work in Chrome for Mobile?</dt>
  6269. <dd>
  6270. This may be caused by several reasons one of which is described and resolved here: <a href="https://github.com/davidstutz/bootstrap-multiselect/pull/223">#223</a>.
  6271. </dd>
  6272. <dt>How to underline the searched text when using the filter?</dt>
  6273. <dd>
  6274. This issue is discussed in <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/309">#309</a>.
  6275. </dd>
  6276. <dt>How to hide the checkboxes?</dt>
  6277. <dd>
  6278. A related issue is discussed in <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/205">#205</a> and includes a possible solution when using CSS to hide the checkboxes:
  6279. <pre class="prettyprint linenums">
  6280. .multiselect-container input {
  6281. display: none
  6282. }
  6283. </pre>
  6284. </dd>
  6285. <dt>How to use Bootstrap Multiselect using <code>$.validate</code>?</dt>
  6286. <dd>
  6287. This topic is discussed in issue <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/347">#347</a>. The fix suggested is as follows:
  6288. <pre class="prettyprint linenums">
  6289. var $form = $("#myForm");
  6290. var validator = $form.data('validator');
  6291. validator.settings.ignore = ':hidden:not(".multiselect")';
  6292. </pre>
  6293. </dd>
  6294. <dt>How to prevent the plugin from selecting the first option in single select mode?</dt>
  6295. <dd>
  6296. This issue is mainly due to the default behavior of most browsers. A workaround can be found here: <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/129">#129</a>.
  6297. </dd>
  6298. <dt>Which are the minimum required components of Twitter Botostrap to get the plugin working?</dt>
  6299. <dd>
  6300. The plugin needs at least the styles for forms and dropdowns. In addition the JavaScript dropdown plugin from Twitter Bootstrap is required. Details can be found here: <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/344">#344</a>.
  6301. </dd>
  6302. <dt>How to use the <code>.multiselect('dataprovider', data)</code> method?</dt>
  6303. <dd>
  6304. Have a look at the <a href="#methods">Methods</a> section. In the past, there has been some confusion about how the method handles option groups. If the documentation does not help you, have a look at the issue tracker, as for example issue <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/356">#356</a>.
  6305. </dd>
  6306. <dt>A <code>type="reset"</code> button does not refresh the multiselect, what to do?</dt>
  6307. <dd>
  6308. Have a look at the <a href="#further-examples">Further Examples</a> section (in addition, issue <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/360">360</a> discussed this).
  6309. </dd>
  6310. <dt>Using multiple <code>select</code>'s in single selection mode with <code>option</code>'s sharing values across the different <code>select</code>'s.</dt>
  6311. <dd>
  6312. This issue is discussed in detail here: <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/362">#362</a>. A simple solution is to use different option values for the option <code>checkboxName</code>:
  6313. <pre class="prettyprint linenums">
  6314. $('.multiselect').multiselect({
  6315. checkboxName: function(option) {
  6316. return _.uniqueId('multiselect_');
  6317. }
  6318. });
  6319. </pre>
  6320. where <code>_.uniqueId('multiselect_')</code> should be replaced with a random generator. Alternatively, a unique value for <code>checkboxName</code> can be used for each multiselect.
  6321. </dd>
  6322. <dt>How to avoid <code>TypeError: Cannot read property "toString" of ...</code>?</dt>
  6323. <dd>
  6324. This error may be thrown if <code>null</code> or <code>undefined</code> is provided as argument of <code>.multiselect('select', value)</code> or <code>.multiselect('deselect', value)</code>, see <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/386">#386</a>.
  6325. </dd>
  6326. <dt>Why is there no "uncheck all" option?</dt>
  6327. <dd>
  6328. This issue is discussed in <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/271">#271.</a>
  6329. </dd>
  6330. <dt>Esc does not close the dropdown?!</dt>
  6331. <dd>
  6332. This issue is discussed in <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/368">#368</a>. Currently, pressing <code>Esc</code> will not close the dropdown as there were some bugs with this.
  6333. </dd>
  6334. <dt>How to keep the dropdown open?</dt>
  6335. <dd>
  6336. This issue is discussed here: <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/426">#426</a>.
  6337. </dd>
  6338. <dt>Why is the dropdown not showing (or only partly shown) within modals?</dt>
  6339. <dd>
  6340. This is a general issue not directly related to Bootstrap Multiselect: <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/455">#455</a>.
  6341. </dd>
  6342. <dt>How do add icons to the options (<a href="https://github.com/davidstutz/bootstrap-multiselect/issues/475">#475</a>)?</dt>
  6343. <dd>
  6344. Adapt the <code>optionLabel</code> option as follows:
  6345. <pre class="prettyprint linenums">
  6346. optionLabel: function(element){
  6347. return $(element).attr('label') || $(element).html();
  6348. },
  6349. </pre>
  6350. </dd>
  6351. <dt>How to add a deselect all functionality (the inverse to the select all option)?</dt>
  6352. <dd>
  6353. This issue was discussed in the following pull request: <a href="https://github.com/davidstutz/bootstrap-multiselect/pull/487">#487</a>.
  6354. </dd>
  6355. <dt>How to bind object values using Knockout JS?</dt>
  6356. <dd>
  6357. <p>This issue was discussed in <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/532">#532</a>.</p>
  6358. <p>The plugin depends upon the following standard knockout bindings: <code>options</code>, <code>value</code>, <code>selectedOptions</code>, <code>enable</code>, <code>disable</code>. When these options change, they will update the internal <code>select</code> element and <code>.multiselect('refresh')</code> is triggered.
  6359. <ul>
  6360. <li><code>options</code>: when <code>options</code> is an observable and changes, the <code>option</code>'s inside the <code>select</code> are updated by knockout and the plugin refreshes.</li>
  6361. <li><code>value</code>: can only be used in single selection mode; Knockout does not support using the value binding handler to update a <code>select</code> with <code>multiple=&quotmultiple&quot;</code>.</li>
  6362. <li><code>selectedOptions</code>: this is a standard knockout binding that updates the checked options inside the <code>select</code> element; use with <code>multiple=&quotmultiple&quot;</code>.</li>
  6363. <li><code>enable</code>: enable the plugin.</li>
  6364. <li><code>disable</code>: disable the plugin.</li>
  6365. </ul>
  6366. <p>Any other options inside the multiselect data bind are passed to the jQuery multiselect plugin.</p>
  6367. </dd>
  6368. <dt>Options do net get updated when using Angular JS?</dt>
  6369. <dd>
  6370. This issues was discussed in <a href="https://github.com/davidstutz/bootstrap-multiselect/pull/519">#519</a>.
  6371. </dd>
  6372. <dt>Is there a search event?</dt>
  6373. <dd>
  6374. This was discussed here: <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/530">#530</a>.
  6375. </dd>
  6376. <dt>How to use the plugin with a local jQuery variable?</dt>
  6377. <dd>
  6378. This was discussed (and solved) here: <a href="https://github.com/davidstutz/bootstrap-multiselect/pull/686">#686</a>
  6379. </dd>
  6380. <dt>how to use font-awesome for checkboxes?</dt>
  6381. <dd>
  6382. This issue was discussed here: <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/576">#576</a>
  6383. </dd>
  6384. <dt>How to focus on search/fiter input on dropdown open?</dt>
  6385. <dd>
  6386. This issue is discussed in <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/615">#615</a> and <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/153">#153</a>.
  6387. </dd>
  6388. <dt>How to initialize the plugin in npm?</dt>
  6389. <dd>
  6390. This issue is discussed here: <a href="https://github.com/davidstutz/bootstrap-multiselect/issues/585">#585</a>. The proposed workaround looks as follows:
  6391. <pre class="linenums prettyprint">
  6392. var $ = require('jquery');
  6393. var multiselect = require('bootstrap-multiselect');
  6394. $.multiselect = multiselect;
  6395. $("#example").multiselect();
  6396. </pre>
  6397. </dd>
  6398. <dt>How to show the dropdown on hover?</dt>
  6399. <dd>
  6400. This can be achieved using a bit of CSS, see <a href="https://stackoverflow.com/questions/16214326/bootstrap-dropdown-with-hover">this StackOverflow discussion</a>.
  6401. </dd>
  6402. <dt>Can I use <a href="https://fontawesome.com/">Font Awesome</a> instead of Bootstrap's glyphicons?</dt>
  6403. <dd>
  6404. Yes, see here: <a href="https://github.com/davidstutz/bootstrap-multiselect/pull/887">#887</a>.
  6405. </dd>
  6406. </dl>
  6407. <div class="page-header">
  6408. <h2 id="known-issues">Known Issues</h2>
  6409. </div>
  6410. <p>
  6411. See the <a href="https://github.com/davidstutz/bootstrap-multiselect/issues">Issue Tracker</a>.
  6412. </p>
  6413. <div class="page-header">
  6414. <h2 id="license">License</h2>
  6415. </div>
  6416. <dl>
  6417. <dt>Apache License, Version 2.0</dt>
  6418. <dd>
  6419. <p>Copyright 2012 - 2018 <a href="http://davidstutz.de/">David Stutz</a></p>
  6420. <p>
  6421. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">http://www.apache.org/licenses/LICENSE-2.0</a>.
  6422. </p>
  6423. <p>
  6424. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
  6425. </p>
  6426. </dd>
  6427. <dt>BSD 3-Clause License</dt>
  6428. <dd>
  6429. <p>Copyright (c) 2012 - 2018 <a href="http://davidstutz.de/">David Stutz</a></p>
  6430. <p>All rights reserved.</p>
  6431. <p>
  6432. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
  6433. </p>
  6434. <ul>
  6435. <li>Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  6436. <li>Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  6437. <li>Neither the name of David Stutz nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
  6438. </ul>
  6439. <p>
  6440. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  6441. </p>
  6442. </dd>
  6443. </dl>
  6444. <hr>
  6445. <p>
  6446. &copy; 2012 - 2018
  6447. <a href="http://davidstutz.de">David Stutz</a> - dual licensed: <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License v2.0</a>, <a href="http://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause License</a>
  6448. </p>
  6449. </div>
  6450. </div>
  6451. </div>
  6452. </body>
  6453. </html>