IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Liste avec une limite d'éléments sélectionnés


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 129
    Points : 57
    Points
    57
    Par défaut Liste avec une limite d'éléments sélectionnés
    Bonjour,

    J'essaye actuellement de faire comme sur ce script: http://fiddle.jshell.net/Luybq3sx/?u...paign=Luybq3sx

    Mais je n'y arrive pas, la limite reste inopérante... Je pense que j'ai oublié quelque chose mais je ne parviens pas à trouver la solution.

    D'avance merci pour vos lumières, je précise que je ne suis pas du tout un as du javascript/jquery.



    Voici mon code (qui affiche la liste, mais sans la limite du nombre de choix):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <html>
    <head>
    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
    <script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
    <link href="css/multi-select.css" media="screen" rel="stylesheet" type="text/css">
    <script src="js/jquery.multi-select.js" type="text/javascript"></script>
     
    <script type='text/javascript'>//<![CDATA[
    $(window).load(function(){
    var MAX_SELECTABLE_OPTIONS = 3,
    selectedCount = 0
     
    $('#myselect').multiSelect({
    afterSelect: afterSelect,
    afterDeselect: afterDeselect
    })
     
    function afterSelect (values) {
    if (values) {
    selectedCount += values.length
    }
    updateMultiSelect(selectedCount)
    }
     
    function afterDeselect (values) {
    if (values) {
    selectedCount -= values.length
    }
    updateMultiSelect(selectedCount)
    }
     
    function updateMultiSelect(selectedCount) {
    var $myselect = $('#myselect'),
    selectedValues = $myselect.val()
     
    if (selectedCount >= MAX_SELECTABLE_OPTIONS) {
    $myselect.children().each(function () {
    if (!_.contains(selectedValues, this.value)) {
    log('disabling', this.value)
    $(this).attr('disabled', 'disabled')
    }
    })
    } else {
    $myselect.children().removeAttr('disabled')
    }
     
    $myselect.multiSelect('refresh')
     
    log('[updateMultiSelect] selectedCount', selectedCount)
    } // end updateMultiSelect
     
    function log () {
    var $log = $('#log'),
    args = Array.prototype.slice.call(arguments)
     
    $log.text($log.text() + args.join(' ') + "\n")
    }
    });//]]>
     
    </script>
     
     
      </head>
    <body>
     
    <select multiple="multiple" id="myselect" name="myselect[]">
      <option value='elem_1'>elem 1</option>
      <option value='elem_2'>elem 2</option>
      <option value='elem_3'>elem 3</option>
      <option value='elem_4'>elem 4</option>
      <option value='elem_100'>elem 100</option>
    </select>
      <textarea id="log"></textarea>
     
    <script>
      $('#myselect').multiSelect({});
    </script>
    </body>
    </html>

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 129
    Points : 57
    Points
    57
    Par défaut
    J'ai enfin fini par trouver la solution, il fallait enlever ma petite ligne de jvs en bas du code, voici le code fonctionnel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    <html>
    <head>
    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
    <script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
    <link href="css/multi-select.css" media="screen" rel="stylesheet" type="text/css">
    <script src="js/jquery.multi-select.js" type="text/javascript"></script>
    <script src="js/underscore-min.js" type="text/javascript"></script>
     
     
    <script type='text/javascript'>//<![CDATA[
    $(window).load(function(){
    var MAX_SELECTABLE_OPTIONS = 3,
    selectedCount = 0
     
    $('#myselect').multiSelect({
    afterSelect: afterSelect,
    afterDeselect: afterDeselect
    })
     
    function afterSelect (values) {
    if (values) {
    selectedCount += values.length
    }
    updateMultiSelect(selectedCount)
    }
     
    function afterDeselect (values) {
    if (values) {
    selectedCount -= values.length
    }
    updateMultiSelect(selectedCount)
    }
     
    function updateMultiSelect(selectedCount) {
    var $myselect = $('#myselect'),
    selectedValues = $myselect.val()
     
    if (selectedCount >= MAX_SELECTABLE_OPTIONS) {
    $myselect.children().each(function () {
    if (!_.contains(selectedValues, this.value)) {
    log('disabling', this.value)
    $(this).attr('disabled', 'disabled')
    }
    })
    } else {
    $myselect.children().removeAttr('disabled')
    }
     
    $myselect.multiSelect('refresh')
     
    log('[updateMultiSelect] selectedCount', selectedCount)
    } // end updateMultiSelect
     
    function log () {
    var $log = $('#log'),
    args = Array.prototype.slice.call(arguments)
     
    $log.text($log.text() + args.join(' ') + "\n")
    }
    });//]]>
     
    </script>
     
     
      </head>
    <body>
     
    <select multiple="multiple" id="myselect" name="myselect[]">
      <option value='elem_1'>elem 1</option>
      <option value='elem_2'>elem 2</option>
      <option value='elem_3'>elem 3</option>
      <option value='elem_4'>elem 4</option>
      <option value='elem_100'>elem 100</option>
    </select>
      <textarea id="log"></textarea>
     
    </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Limiter une liste avec une barre de défilement
    Par bullrot dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 23/10/2008, 14h53
  2. [MySQL] affichage d'une liste avec une boucle while
    Par Invité dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/01/2007, 21h19
  3. remplir une liste avec une condition
    Par romika dans le forum Access
    Réponses: 4
    Dernier message: 24/01/2007, 10h44
  4. Réponses: 8
    Dernier message: 30/09/2006, 06h18
  5. pb liste avec une requête comme contenu
    Par pellec dans le forum IHM
    Réponses: 1
    Dernier message: 07/06/2006, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo