Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/02/2012, 03:59
Avatar de Naahuel
Naahuel
 
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 8 meses
Puntos: 192
Respuesta: Colocar checkboxes sólo a elementos nuevos

Espero haber entendido: http://jsbin.com/urayan

Código HTML:
Ver original
  1. <script type="text/javascript">
  2. jQuery(document).ready(function($){
  3.  
  4. //    function interseccion( texto1 , texto2 ) {
  5. //            array1 = texto1.split(",");
  6. //            $.each(texto2.split(",") , function (ind , valor) {
  7. //                if (array1.indexOf(valor) == -1)
  8. //                    array1.push(valor);
  9. //            });
  10. //        return array1;
  11. //    }
  12.  
  13. //differencia en lugar de interseccion
  14. Array.prototype.diff = function(a) {
  15.     return this.filter(function(i) {return !(a.indexOf(i) > -1);});
  16. };
  17.  
  18.     $("#wpsi_res_submit").click(function() {
  19.         //$( "#sortable" ).empty();                                 // no vaciar!
  20.  
  21.         var input_1 = $('#wpsi_res_img1');                          //almacenar los inputs en variables
  22.         var input_2 = $('#wpsi_res_img2');                          //almacenar los inputs en variables
  23.        
  24.         var valor2 = '';
  25.        
  26.         var val_arr1 = input_1.val().split(',');        //calcular la diferencia
  27.         var val_arr2 = input_2.val().split(',');        //calcular la diferencia
  28.         var inter = val_arr2.diff(val_arr1);            //calcular la diferencia
  29.        
  30.         console.log(inter);                             //debug
  31.         console.log(inter.length);                      //debug
  32.        
  33.         for (i = 0; i < inter.length; i++) {
  34.             //agregar solo los que son nuevos
  35.            $( "#sortable" ).append('<li class="ui-state-default" id="li-' + inter[i] + '">' + inter[i] + ' <input type="checkbox" class="check" id="eliminar-' + inter[i] + '" /><\/li>');
  36.  
  37.             valor2 += inter[i];
  38.  
  39.             if (i < inter.length - 1) {
  40.                valor2 += ',';
  41.            }
  42.        }
  43.  
  44.         input_1.val(input_1.val() + ',' + valor2);                          //en lugar de borrar todo, agregar solo los nuevos
  45.        input_2.val('');
  46.    });
  47.  
  48.    $("#sortable").sortable({
  49.        update: function() {
  50.            var wpsi_pos = [];
  51.            $('#sortable > li').each(function(i) {
  52.                 wpsi_pos[i] = $(this).attr('id').replace('li-' , '');
  53.             });
  54.  
  55.             $('#wpsi_res_img1').val(wpsi_pos.toString());
  56.         }
  57.     });
  58.  
  59.     $("#wpsi_res_delete").click(function () {
  60.         $('.check:checked').parent().empty().remove();
  61.             var wpsi_pos2 = [];
  62.             $('#sortable > li').each(function(i) {
  63.                 wpsi_pos2[i] = $(this).attr('id').replace('li-' , '');
  64.             });
  65.  
  66.             $('#wpsi_res_img1').val(wpsi_pos2.toString());
  67.  
  68.     });
  69.  
  70. });

Comenté los cambios para que puedas entender lo que hice :P
__________________
nahueljose.com.ar