jquery выбрал опцию Shift в множественном выборе?

Я использую плагин jQuery Chosen для автозаполнения. Можно ли использовать Shift + клавишу со стрелкой, чтобы выбрать несколько и выделить параметр в множественном выборе. Пожалуйста, найдите снимок ниже: введите здесь описание изображения

Любая помощь будет оценена по достоинству..!!!

В файл selected.jquery.js я добавил приведенный ниже фрагмент кода для реализации комбинации клавиш Shift+стрелка.

Chosen.prototype.keydown_checker = function(evt) {
  var stroke, _ref1;

  stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode;
  this.search_field_scale();
  if (stroke !== 8 && this.pending_backstroke) {
    this.clear_backstroke();
  }
  switch (stroke) {
    case 8:
      this.backstroke_length = this.search_field.val().length;
      break;
    case 9:
      if (this.results_showing && !this.is_multiple) {
        this.result_select(evt);
      }
      this.mouse_on_container = false;
      break;
    case 13:
      evt.preventDefault();
      break;
    case 38:
      evt.preventDefault();
      this.keyup_arrow();
      break;
    case 40:
      evt.preventDefault();
      this.keydown_arrow();
      break;
    case 16:
        if (this.result_highlight) {
            high = this.result_highlight;
            this.result_select(evt);
        }
        break;
  }
}

person Maniram    schedule 09.09.2014    source источник
comment
Пожалуйста, поделитесь своим кодом, который вы пробовали   -  person Bhushan Kawadkar    schedule 09.09.2014
comment
Я обновил сообщение с кодом выше..   -  person Maniram    schedule 09.09.2014


Ответы (1)


Я нашел решение...

В файле Chosen.js Версия 1.8.7

строка: 132

this.selected_elements = [];
this.holding_shift = false;

строка 475:

    case 16:
      if (this.results_showing && this.is_multiple){ 
        this.holding_shift = true; 
      }
      break;

строка 526:

    case 27:
      if (this.results_showing) {
        this.results_hide();
      }
      break;
    case 16:
      if (this.results_showing && this.is_multiple) { this.holding_shift = false; }
      break;
    case 9:
    case 17:
    case 18:
    case 38:
    case 40:
    case 91:
      break;

строка 1064:

Chosen.prototype.search_results_mouseup = function(evt) {
  var target;
  target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();

  //Support Shift + Select
  if (this.holding_shift) {
    if (this.selected_elements.length < 1) {
        target.addClass("first-selected selected-result");
        this.selected_elements.push(target);
        true;
    } else {
        let selected = null;
        const direction = target.prevAll('.first-selected').length > 0 ? 'back' : 'forward';

        if (target.get(0) === this.selected_elements[0].get(0)) { return false; }

        if (direction === "forward") {
            selected = target.nextUntil(this.selected_elements[0], ':not(.result-selected)').addBack().add(this.selected_elements[0]);
        } else {
            selected = target.prevUntil(this.selected_elements[0], ':not(.result-selected)').addBack().add(this.selected_elements[0]);
        }

        selected.each((i, elem) => {
            this.result_highlight = $(elem);
            return this.result_select(evt);
        });

        this.selected_elements[0].removeClass("first-selected selected-result");
        this.selected_elements = [];
        this.holding_shift = false;
        selected = false;

        return this.search_field.focus();
    }
    }

  else if (target.length) {

строка 1209:

 if (this.is_multiple && (!this.hide_results_on_select || (evt.metaKey || evt.ctrlKey || evt.shiftKey))) {
          if (evt.metaKey || evt.ctrlKey || evt.shiftKey) {
            this.winnow_results({

и файл chosen.css

строка 239:

.chosen-container .chosen-results li.highlighted, li.selected-result {

строка 330:

  /*background-size: 100% 19px;
  background-repeat: repeat-x;*/

и это все люди

person luisfbn    schedule 13.05.2019