2012-06-18 16 views
8

Sto usando il plugin jQuery Tokeninput. Ho bisogno di impedire all'utente di inserire i valori duplicati, il codice Js è la seguente:tokeninput plug-in jquery - avoidDuplicates 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; 
    } 
}); 

Quando seleziono di nuovo lo stesso articolo, l'elemento esistente nel campo di input viene evidenziato e nulla viene aggiunto.

Inoltre, quando si seleziona un elemento diverso, il primo elemento viene evidenziato e non viene aggiunto nulla.

Qualche idea?

Grazie

+0

Stesso problema qui! – franciscovalera

+0

ho lo stesso problema hai trovato qualche soluzione? – medBo

risposta

8

Nel caso in cui si sta ancora avendo questo problema, penso che potrei sapere cosa sta succedendo. TokenInput presuppone che l'attributo "id" del tuo oggetto dati sia scritto esattamente come "id" (nota la minuscola). Se il tuo attributo id è scritto in modo diverso, ciò che hai descritto avverrà. Come riferimento, ciò si verifica nella funzione add_token (riga 495 nel file js in v1.6.0 tokeninput.js).

1

il modo migliore è limitare l'elenco di ricerca a discesa. rimuovendo gli elementi selezionati nel campo di testo.

"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" 

questa query rimuoverà i valori precompilare dalla lista viene selezionato di nuovo