2016-01-28 3 views
2

У меня есть вход Select2, который я использую для поиска (удаленные данные). В настоящее время он работает так:Select2 - начать поиск ajax при вводе

, когда пользователь еще-один символы мы инициируем поиск автоматически

Теперь самый интересный:

Мне нужно добавить следующее поведение:

когда пользователь фокусируется на этом вводе и просто нажимает кнопку Enter, мне нужно вызвать поиск с одним символом '*' НО, но без записи этого символа на входе.

Он должен просто отправить запрос поиска с символом *, но вход должен оставаться пустым.

Возможно ли это даже без беспорядка Select2 code?

Мой код:

$("#account").select2({ 
    language: "en", 
    ajax: { 
     url: window.urls.ajax_account_search, 
     dataType: 'json', 
     delay: 500, 
     data: function(params){ 
      console.log(params); 
      return { 
       query: params.term, 
       page: params.page 
      } 
     }, 
     processResults: function(data, params){ 
      return { 
       results: data.items 
      } 
     }, 
     cache: true 
    }, 
    escapeMarkup: function(m) { return m; }, 
    templateResult: formatSearchResult, 
    templateSelection: formatSearchSelection, 
    minimumInputLength: 1 
}); 
+0

http://stackoverflow.com/questions/30517128/how-to-programmatically-inject-search-queries-into-select2-v4 –

+0

Спасибо за ссылку, но она не подходит мое дело. Используя метод из вашей ссылки, символ «*» будет отображаться на входе. – dease

+0

Существует метод 'open', который определяет событие open. –

ответ

0

Вместо запуска поиска на введите (с * отсылается), вы можете просто отправить * когда нет термина поиска нет. Это также означает отказ от требования minimumInputLength, но это похоже на то, что вы ищете.

$("#account").select2({ 
    language: "en", 
    ajax: { 
     url: window.urls.ajax_account_search, 
     dataType: 'json', 
     delay: 500, 
     data: function(params){ 
      return { 
       query: params.term || '*', // send * if there is no term 
       page: params.page 
      } 
     }, 
     processResults: function(data, params){ 
      return { 
       results: data.items 
      } 
     }, 
     cache: true 
    }, 
    escapeMarkup: function(m) { return m; }, 
    templateResult: formatSearchResult, 
    templateSelection: formatSearchSelection 
}); 
Смежные вопросы