Как увеличить список результатов в jquery.textcomplete.js

Я использую jquery.textcomplete.jsдля моего проекта, но jquery.textcomplete.jsгенерирует только 5 список из-за этого я не могу выбрать правильное слово. Пожалуйста, дайте мне знать, как увеличить размер списка с 5 до 10 или более.

Другая проблема, если в моем слове есть место, например, «Close End Account Details», то я не могу его получить, когда я нажимаю пробел после записи «Close» в моей текстовой области. Пожалуйста, помогите мне избавиться от этого.

Ниже приведен код.

$(document).ready(function () {
    try {
        var obj = [];
        @{
            foreach (var item in Model.WholeList)
            {

            @:obj.push('@item.Text');
                               }
    }
        $('#mytext').textcomplete([
       {
           words: obj,
           match: /b(w{1,})$/,
           maxCount :10,
           search: function (term, callback) {
               callback($.map(this.words, function (word) {
                   return word.search(new RegExp(term, "i")) == 0 ? word : null;
               }));
           },
           index: 1,
           replace: function (word) {
               return ' ' + word + ' ' + ' ';
           }
       }
        ]);
    }
    catch (Exception) {
    }
});

3 ответа

  1. Имел ту же проблему, попробовал некоторые примеры, которые не работали и в конечном итоге вырезали проблему из ее корня.

    В какой-то момент в jquery.textcomplete.библиотека js, вы должны найти строку, которая устанавливает переменную 10 (это значение по умолчанию)

    maxCount:10
    

    Измените это на то, что вы хотите, и вы должны быть в порядке.

    Бонус: если вы хотите иметь много записей в выпадающем списке, вы, вероятно, захотите применить эти правила css к элементу:

    max-height: 300px; [or-any-other-value]
    overflow-Y: auto;
    

    для того, чтобы избежать у вас окно выходит за пределы.


    ОСТОРОЖНОСТЬ:

    Это решение должно быть вашим последним средством, так как у него есть некоторые серьезные недостатки:

    1. Это не динамично
    2. Будет потерян при повторном импорте файла или обновлении библиотеки jquery.

    Если вы нашли правильный способ установки переменной maxCount, пожалуйста, поделитесь им здесь 🙂

  2. Вы можете просто добавить maxCount: 10 или какое бы то ни было число к инициализации, как показано ниже:

    ('textarea.content').textcomplete([
    { // html
        match: /<(\w*)$/,
        search: function (term, callback) {
            callback($.map(elements, function (element) {
                return element.indexOf(term) === 0 ? element : null;
            }));
        },
        index: 1,
        replace: function (element) {
            return ['<' + element + '>', '</' + element + '>'];
        }
    },
    { // Model properties
        id: 'availableModelNames',
        words: availableTags,
        match: /\@Model.(\w*)$/,
        search: function (term, callback) {
            callback($.map(this.words, function (word) {
                return word.indexOf(term) === 0 ? word : null;
            }));
        },
        index: 1,
        replace: function (word) {
            return '@Model.' + word;
        }
    }
    ], {
        onKeydown: function (e, commands) {
            if (e.ctrlKey && e.keyCode === 74) { // CTRL-J
                return commands.KEY_ENTER;
            }
        },
        maxCount: 10
    });
    
  3. При просмотре документов для параметров объекта Textcomplete (TextcompleteOptions) можно увидеть, что существует свойство dropdownс именем type DropdownOptions.

    Одно из свойств DropdownOptionsявляется maxCountто, что мы ищем здесь. Это свойство принимает номер.

    Ниже я показываю установкуmaxCount, чтобы быть 100 после инициализации Textcompleteобъекта:

    var textcomplete = new Textcomplete(new Textcomplete.editors.Textarea(this));
    
    textcomplete.dropdown.maxCount = 100;