2013-07-30 1 views
1

J'ai posé hier une question que je réalise n'a pas vraiment de sens, donc je l'ai fait beaucoup plus simple j'espère maintenant!Modifier la valeur d'entrée en fonction de l'ordre de la liste dans jQuery

J'ai une liste non ordonnée

<ul id="itemlist"> 
<li>item 1 <input type="hidden" name="slide-order[]" value="slide[]" /></li> 
<li>item 2 <input type="hidden" name="slide-order[]" value="slide[]" /></li> 
</ul> 

Et ce script triables

$("#itemlist").sortable({ 
    change: function(event, ui){ 

     var sort = $('#itemlist').find('input'); 

     sort.each(function(index){ 
      $(this).val((index + 1)); 
     }); 
    } 
}); 

Ce que je dois est la valeur de rester toujours dans l'ordre 1,2,3,4 etc lors du déplacement des éléments de la liste autour. Donc, même si l'article 2 a été déplacé vers le haut, la valeur deviendrait 1.

J'ai essayé différentes méthodes, mais rien ne semble fonctionner:/

Répondre

4

Quelque chose comme ça ?

$("#itemlist").sortable({ 
    stop: function(event, ui){ 
     var cnt = 1; 
     $(this).children('li').each(function(){ 
      $(this).children('input').val("slide["+cnt+"]"); 
      cnt++; 
     }); 
    } 
}); 

DEMO

+0

La commande ne se définit pas lorsque vous faites glisser sur votre démo, ne cesse de se remettre en place? –

+0

@DamianSmith Non, cela a changé le texte. Mais j'ai mis à jour le violon je pense que c'est ce que vous vouliez http://jsfiddle.net/d4EvC/3/ – Anton

+0

Vous êtes une star, fonctionne parfaitement! Merci! –

0

Essayez cette

var sort = $('#itemlist').find('input'); 
sort.each(function(){ 
    var index = $(this).index(); 
    $(this).val((index + 1)); 
}); 
+0

La valeur ne change pas, j'ai mis l'entrée au texte à surveiller tout changement mais rien. :/ –

Questions connexes