2012-06-18 20 views
8

Używam wtyczki jQuery Tokeninput. Potrzebuję, aby zapobiec przedostawaniu użytkownika zduplikowane wartości, kod JS jest w następujący sposób:tokeninput jquery plugin - preventDuplicates nie działa

$(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; 
    } 
}); 

Kiedy wybrać ten sam element ponownie istniejący element w polu wejściowym jest podświetlony i nic nie dodaje.

Również po wybraniu innej pozycji pierwszy element zostanie podświetlony i nic nie zostanie dodane.

Każdy pomysł?

Dzięki

+0

sam problem tutaj! – franciscovalera

+0

Mam ten sam problem, czy znalazłeś jakieś rozwiązanie? – medBo

Odpowiedz

8

W przypadku nadal masz ten problem, myślę, że wiem, co się dzieje. TokenInput zakłada, że ​​atrybut "id" obiektu danych jest zapisany dokładnie jako "id" (zanotuj małe litery). Jeśli twój atrybut identyfikatora zostanie zapisany w inny sposób, to co opisałeś, stanie się. Dla Twojej informacji dzieje się to w funkcji add_token (linia 495 w pliku js w pliku tokeninput.js w wersji 1.6.0).

1

najlepszym sposobem jest ograniczenie rozwijanej listy wyszukiwania. poprzez usunięcie wybranych elementów z pola tekstowego.

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

ta kwerenda usunie wartości wstępnie wypełnić z listy wybiera się ponownie