Ver Mensaje Individual
  #5 (permalink)  
Antiguo 28/05/2011, 10:06
Avatar de metacortex
metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: JQuery - No repetir valores en input

Qué buen enlace masterpuppet!! La analogía con PHP ayudará mucho a comprender mejor javascript. Creo que has reducido mi tiempo de aprendizaje a un tercio jejeje. Gracias hermano.

Respecto al .unique() así es, estuve intentando un buen rato con éste pero al final me decanté por la solución de alexg88, la cual me resulta bastante viable hasta el momento, ya que en la salida interseccion(...) puedo introducir los valores como strings. Gracias alexg88. De hecho pude ver varios ejemplos similares por ahí que hacen lo mismo, pero tu código es más pequeño y va más al grano .

El asunto es éste: se trata de un sortable hecho con JQuery UI. El problema que enfrentaba con los valores de ambos campos era que también debía refrescar el html y el contenido del input al pulsar el botón. Quedó 100% funcional, éste es el código resultante:

Código Javascript:
Ver original
  1. function interseccion( texto1 , texto2 ) {
  2.         array1 = texto1.split(",");
  3.  
  4.         $.each(texto2.split(",") , function (ind , valor) {
  5.             if (array1.indexOf(valor) == -1)
  6.                 array1.push(valor);
  7.         });
  8.  
  9.     return array1; // le quité el toString porque lo necesito como un array
  10.     }
  11.  
  12.  
  13.     $("#agregar").click(function () {
  14.         $( "#sortable" ).empty();
  15.  
  16.         var valor2 = '';
  17.         var coco = interseccion($("#select-result").val() , $("#resultado-agregar").val());
  18.  
  19.         for (i = 0; i < coco.length; i++) {
  20.             $( "#sortable" ).append('<li class="ui-state-default" id="widget-' + coco[i] + '">' + coco[i] + '<input type="checkbox" class="check" id="eliminar-' + coco[i] + '" /><\/li>');
  21.  
  22.             valor2 += coco[i];
  23.  
  24.             if (i < coco.length - 1) {
  25.                 valor2 += ',';
  26.             }
  27.         }
  28.  
  29.         $('#select-result').val(valor2);
  30.     });
En el proyecto, el input viene con datos. Así que con el click les asigno un nuevo valor que reemplaza los existentes. Igual se destruye/reconstruye el html dentro de #sortable. Eso solucionó el problema.

Tredio, tienes razón, el código se parece al de alexg88. Pero es importante porque demuestra por dónde debe ir el asunto. Gracias hombre.

PD: Les paso karma mañana amigos! (Esta mañana agoté la cuota de hoy) Gracias por todo.