Ver Mensaje Individual
  #6 (permalink)  
Antiguo 28/05/2011, 17:05
Avatar de masterpuppet
masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: JQuery - No repetir valores en input

No me refería a unique de jQuery(solo funciona con los elementos DOM), sino a implementar un unique, algo así(no recuerdo la fuente):

Código Javascript:
Ver original
  1. Array.prototype.unique = function() {
  2.   var a = [];
  3.   var l = this.length;
  4.   for(var i = 0; i < l; i++) {
  5.     for(var j = i + 1; j < l; j++) {
  6.       if (this[i] === this[j])
  7.         j = ++i;
  8.       }
  9.       a.push(this[i]);
  10.     }
  11.     return a;
  12. }

Y podrías cachear los elementos antes del click, sino en cada click estas haciendo un traverse del DOM, tienes que tener en cuenta lo que significa el $, mira el for, estas haciendo un traverse en cada iteración, podrías hacer algo así:

Código Javascript:
Ver original
  1. //ready
  2. var sortable = $('#sortable');
  3. var select   = $('#select-result');
  4. var add      = $('#resultado-agregar');
  5.  
  6. $("#agregar").click(function () {
  7.  
  8.     sortable.empty();
  9.  
  10.     var ids   = select.val().split(',').concat(add.val().split(',')).unique();
  11.  
  12.     for (var i = 0; i < ids.length; i++) {
  13.         sortable.append('<li class="ui-state-default" id="widget-' + ids[i] + '">' + ids[i] +
  14.                         '<input type="checkbox" class="check" id="eliminar-' + ids[i] + '" ></li>');
  15.     }
  16.  
  17.     select.val(ids.join(','));
  18.  
  19. });

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)