Параметр Tag-it onlyAvalaibleTags не работает - PullRequest
3 голосов
/ 06 декабря 2011

Я использую плагин tag-it от https://github.com/aehlke/tag-it/downloads. Как отключить добавление новых тегов?

$(document).ready(function () {
                $("#Tags").tagit({
                    singleField: true,
                    singleFieldNode: $('#mySingleField'),
                     //  onlyAvailableTags : true,
                     allowNewTags: false,
                    tagSource: [@Html.Raw(ViewBag.AvailableTags)]
                });
            });

Я пытался использовать опции onlyAvailableTags : true и allowNewTags: false, но эффекта не было.

Ответы [ 3 ]

1 голос
/ 28 июня 2013

Я обнаружил, что, комментируя:

 // Autocomplete will create its own tag from a selection and close automatically.
 if (!that.tagInput.data('autocomplete-open')) {
    that.createTag(that._cleanedInput());
 }

И:

// Create a tag when the element loses focus.
// If autocomplete is enabled and suggestion was clicked, don't add it.
if (!that.tagInput.data('autocomplete-open')) {
     that.createTag(that._cleanedInput());
}

Это удаляет эту функциональность.Возможно, это не самый чистый способ сделать это, но он работает.

Просто закомментируйте циклы if(){ }.

1 голос
/ 28 мая 2015

Это то, что я сделал для последней версии tag-it:

var tags_list = ['tag1', 'tag2, 'tag3];

$("input[name='subject-tags']").tagit({
    availableTags : tags_list,
    beforeTagAdded : function(event, ui) {
        if(tags_list.indexOf(ui.tagLabel) == -1){
            return false;
        }
    }
});

Пытался сделать его чище, внедрив

$("input[name='subject-tags']").tagit({
    availableTags : ['tag1', 'tag2, 'tag3],
    beforeTagAdded : function(event, ui) {
        if(this.availableTags.indexOf(ui.tagLabel) == -1){
            return false;
        }
    }
});

Но this.availableTags не возвращает массив (возврат: undefined). Я JS Noob, поэтому что-то не так с тем, как я получаю доступ к собственности.

0 голосов
/ 03 апреля 2012

Поскольку вы говорите «но эффекта нет», я думаю, что @Html.Raw(ViewBag.AvailableTags) создает вывод, который нарушает синтаксис javascript.Теги должны быть в кавычках, в противном случае они обрабатываются как переменные.

Неправильный вывод:

tagSource: [my-tag, another-tag]

На стороне сервера, я полагаю, у вас есть какой-то IEnumerable<string>:

ViewBag.AvailableTags = new List<string>
{
    "my-tag",
    "another-tag",
};

Тогда в вашем .cshtml:

tagSource: ["@string.Join("\", \"", ViewBag.AvailableTags)"]

Это даст правильный вывод:

tagSource: ["my-tag", "another-tag"]

Это будет то, что я попробую первым.

...