2009-12-19 5 views
0

Je travaille sur un projet où j'ai besoin de planifier des personnes dans les chambres. J'utilise des sortables jQuery pour réaliser cette tâche. Le seul «problème» est qu'il y a une capacité maximale pour une pièce. Par exemple. Certaines chambres peuvent avoir max. 3 personnes, d'autres 4 et quelques-unes seulement 1. Donc, après avoir parcouru la documentation de jQuery, je suis arrivé avec ça .. seulement, ça ne fait rien. La partie entre onStart: function(){} est créée dynamiquement par PHP.Limite jQuery trier la liste

Avez-vous l'expérience de la mise en place d'un max. d'éléments dans une liste triable et vérifier cela?

$(function() { 
    $(".sortable, .connectable").sortable({ 
     connectWith: '.sortable, .connectable', 
     helper: 'clone', 
     cursor: 'move', 
     onStart: function() 
     { 

      if($(".room-1-1").sortable('items') == 2) 
      { 
       alert("Maximum reached.."); 
      } 


      if($(".room-1-2").sortable('items') == 2) 
      { 
       alert("Maximum reached.."); 
      } 

         } 
    }).disableSelection(); 
}); 

Répondre

0

Facilement résolu en mettant en cache une fonction javascript qui vérifie le nombre d'éléments LI dans un élément DOM spécifié.

0

Il me semble que vous manque seulement une seule pièce, dans Firebug, essayez:

$(".room-1-1").sortable('items') 

Vous probablement pas voir un certain nombre d'éléments, mais plutôt une collection d'éléments. Alors, ce que vous voulez est:

if($(".room-1-1").sortable('items').length == 2) { ... } 
+0

J'ai aussi essayé ça plus tôt mais ça ne fait aucune différence ... Je me suis dit que nous recevrions aussi une sorte de tableau. Mais mon 'alerte()' n'apparaît jamais. – Ben

+0

Eh bien, qu'est-ce qui est retourné? Que dit firebug? – rfunduk

+0

Comme l'a dit Wookai, il se peut que vous ne vouliez pas appeler 'sortable' sur la collection dans ce cas. – rfunduk

1

Tout d'abord, si vous voulez accrocher n'est pas onStart, mais simplement start, according to the doc. Puis, comme l'ont dit les thenducks, je ne pense pas que votre façon de compter les éléments soit correcte. Vous pouvez le faire en utilisant whithout sortable pour le comptage:

if($(".room-1-1 items").length == 2) 
{ 
    alert("Maximum reached.."); 
} 

items est le sélecteur sur les types d'éléments dans vos listes (peut-être divs, lis, une classe CSS, etc ..).