2012-06-18 12 views
8

Estoy usando jquery plugin Tokeninput. Necesito para evitar la entrada de usuario valores duplicados, el código Js es la siguiente:tokeninput jquery plugin - preventDuplicates not working

$(document).ready(function() { 
    // Configure Tags 
    $('#Tags').tokenInput(tagSource(), 
    { 
     prePopulate: selectedTags(), 
     theme: "facebook", 
     propertyToSearch: "Code", 
     preventDuplicates: true 
    }); 

    function tagSource() { 
     var data = []; 
     @if (Model.SourceTags != null && Model.SourceTags.Count() > 0) { 
      <text> 
       data = @(Html.Raw(Model.SourceTags)); 
      </text> 
     } 
     return data; 
    } 

    function selectedTags() { 
     var selectedData = []; 
     @if (Model.SelectedTags != null && Model.SelectedTags.Count() > 0) { 
      <text> 
       selectedData = @(Html.Raw(Model.SelectedTags)); 
      </text> 
     } 
     return selectedData; 
    } 
}); 

Cuando selecciono otra vez con el mismo tema, el elemento existente en el campo de entrada se resalta y se añade nada.

Además, cuando selecciono un elemento diferente, el primer elemento se resalta y no se agrega nada.

¿Alguna idea?

Gracias

+0

El mismo problema aquí! – franciscovalera

+0

tengo el mismo problema ¿ha encontrado alguna solución? – medBo

Respuesta

8

En caso de que todavía tiene este problema, creo que podría saber lo que está pasando. TokenInput supone que el atributo "id" de su objeto de datos se deletrea exactamente como "id" (tenga en cuenta la minúscula). Si su atributo id se escribe de manera diferente, lo que describió sucederá. Para su referencia, esto sucede en la función add_token (línea 495 en el archivo js en v1.6.0 tokeninput.js).

1

la mejor manera es limitar la lista de búsqueda desplegable. eliminando los elementos seleccionados en el campo de texto.

"SELECT id, title from job_categories WHERE id NOT IN (".$member->category_id.") AND title LIKE '%%%".$this->input->get('q')."%%' ORDER BY id DESC LIMIT 10" 

esta consulta se eliminarán los valores rellenar previamente de la lista se selecciona de nuevo