Fork me on GitHub

It depends on jQuery 1.4.2 and jQuery UI 1.8. The widget is styleable using Themeroller. It works in an unobtrusive fashion, by just turning html multiple select inputs into a sexier equivalent. There's no extra markup needed.

Localisation support is done through the localization plugin available here.

The widget is available under the dual MIT and GPL licenses.


Demo

Multiselect with local content :
4 items selectedRemove all
  • Austria
  • Germany
  • Netherlands
  • United States
Add all
  • Afghanistan
  • Albania
  • Algeria
  • Andorra
  • Argentina
  • Armenia
  • Aruba
  • Australia
  • Azerbaijan
  • Bangladesh
  • Belarus
  • Belgium
  • Bosnia and Herzegovina
  • Brazil
  • Brunei
  • Bulgaria
  • Canada
  • China
  • Colombia
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Egypt
  • Estonia
  • Finland
  • France
  • Georgia
  • Greece
  • Hong Kong
  • Hungary
  • Iceland
  • India
  • Indonesia
  • Iran
  • Ireland
  • Israel
  • Italy
  • Japan
  • Jordan
  • Kazakhstan
  • Kuwait
  • Kyrgyzstan
  • Latvia
  • Lebanon
  • Liechtenstein
  • Lithuania
  • Luxembourg
  • Macau
  • Macedonia
  • Malaysia
  • Malta
  • Mexico
  • Moldova
  • Mongolia
  • New Zealand
  • Nigeria
  • Norway
  • Peru
  • Philippines
  • Poland
  • Portugal
  • Qatar
  • Romania
  • Russia
  • San Marino
  • Saudi Arabia
  • Serbia and Montenegro
  • Singapore
  • Slovakia
  • Slovenia
  • South Africa
  • South Korea
  • Spain
  • Sri Lanka
  • Sweden
  • Switzerland
  • Syria
  • Taiwan
  • Tajikistan
  • Thailand
  • Turkey
  • Turkmenistan
  • Ukraine
  • United Arab Emirates
  • United Kingdom
  • Uzbekistan
  • Vatican City
  • Vietnam
Test submit (will not reload the page)
Multiselect with remote content :
0 items selectedRemove all
Add all
  • Achumawi
  • Aja (Sudan)
  • Arikapú
  • Armenian
  • Barombi
  • Bera
  • Croatia Sign Language
  • Darmiya
  • Dass
  • Dii
  • Dixon Reef
  • East Tarangan
  • El Hugeirat
  • Gallurese Sardinian
  • Gbaya (Sudan)
  • Iwal
  • Janji
  • Kambiwá
  • Keyagana
  • Kirmanjki
  • Kotafon Gbe
  • Kunigami
  • Label
  • Layakha
  • Libyan Spoken Arabic
  • Limburgish, Limburger, Limburgan
  • Manado Malay
  • Maridjabin
  • Masikoro Malagasy
  • Ngeq
  • Niuatoputapu
  • Old Saxon
  • Ontong Java
  • Palya Bareli
  • Pitcairn-Norfolk
  • Porohanon
  • Pula Yi
  • Qaqet
  • Qawasqar
  • Ruli
  • Safaliba
  • Sanskrit
  • Sengseng
  • Sirionó
  • Swiss-French Sign Language
  • Tulu
  • Uab Meto
  • Wara
  • Western Xwla Gbe
  • Yatzachi Zapotec
Test submit (will not reload the page)
Toggle external controls (IE6 doesn't render well this layout.... and I don't care)

Features

Localisation

Known bugs

Limitations

Todos...

Here's a list of features that may or may not be implemented in future releases (no specific versions).

Contributors

Misc

There are no limitations. Do whatever you want with this plugin. If you did some nice modifications, just let us know (via Github). We'd be happy to review them, and perhaps include them.

  • animated

    Type:
    String, null
    Default:
    'fast'
  • dataParser

    Type:
    Function
    Default:
    defaultDataParser
  • dividerLocation

    Type:
    float
    Default:
    0.6
  • droppable

    Type:
    String
    Default:
    'both'
  • hide

    Type:
    String
    Default:
    'slideUp'
  • nodeComparator

    Type:
    Function, null
    Default:
    defaultNodeComparator
  • nodeInserted

    Type:
    Function, null
    Default:
    null
  • searchable

    Type:
    boolean
    Default:
    true
  • searchDelay

    Type:
    int
    Default:
    400
  • show

    Type:
    String
    Default:
    'slideDown'
  • sortable

    Type:
    String
    Default:
    'left'
  • remoteParams

    Type:
    Object
    Default:
    { }
  • remoteUrl

    Type:
    String, null
    Default:
    null
  • enabled

    Signature:
    .multiselect( 'enabled', [state], [msg] )
  • deselect

    Signature:
    .multiselect( 'deselect', item )
  • destroy

    Signature:
    .multiselect( 'destroy' )
  • isBusy

    Signature:
    .multiselect( 'isBusy' )
  • isSelected

    Signature:
    .multiselect( 'isSelected', item )
  • option

    Signature:
    .multiselect( 'option', optionName, [value] )
  • select

    Signature:
    .multiselect( 'select', item )
  • selectAll

    Signature:
    .multiselect( 'selectAll' )
  • selectedValues

    Signature:
    .multiselect( 'selectedValues' )
  • selectNone

    Signature:
    .multiselect( 'selectNone' )

All event callbacks receive two parameters: the event object and the ui object. The ui object's property may vary between events, but all share these basic properties:

  • ui.sender : the SELECT element where the event originated (use $(ui.sender).multiselect(...) to access widget)

  • deselected

    Type:
    multiselectdeselected
  • messages

    Type:
    multiselectmessages
  • selected

    Type:
    multiselectselected