Неправильное значение поля со списком Kendo при нажатии клавиши Enter

TL; DR: как заставить value () правильно реагировать на условия, указанные в ссылке jsbin? http://jsbin.com/pikoye/edit

Я использую ComboBox Kendo UI и натолкнулся на крайний случай, с которым, надеюсь, кто-то может мне помочь. Я использую поле со списком как средство для отображения списка команд MRU. С помощью шагов, изложенных ниже, если пользователь выбирает команду, но затем либо передумает, либо редактирует ее, результирующий value() по-прежнему будет иметь значение из выбранного элемента.

  1. Выберите элемент в списке с помощью мыши
  2. Курсор теперь находится в конце текста в текстовом поле.
  3. Выделите весь текст
  4. Введите 'something' и нажмите enter.
  5. В предупреждении будет отображаться значение выбранного элемента, но текст «что-то».

Я пробовал другие события нажатия клавиш, чтобы попытаться изменить время, но мне не повезло. Это происходит в IE11, Chrome и Firefox. Я также пробовал другую версию KendoUI. Мы хотим, чтобы пользователь нажимал enter, чтобы подтвердить свой выбор, так что это должно остаться. Мое решение - использовать значение text(), которое на данный момент работает, но похоже, что value() должно работать.

Обновление: я бы хотел, чтобы Value() возвращал «что-то» вместо индекса того, что вы когда-либо выбрали. Я могу сравнить Text() с текстовым значением индекса, но похоже, что это ненужное сравнение. Чтобы увидеть значения, которые я ожидал увидеть, нажмите кнопку «Настроить».


person Nate Pink    schedule 22.10.2014    source источник


Ответы (1)


В этом jsbin я предложил возможное решение для вас http://jsbin.com/vupagekizu/1/

Надеюсь, я понял, что вам нужно.

В основном все, что я сделал, - это добавление события Select в поле со списком для вас, которое проверяет, превышает ли индекс выбранного элемента -1, то есть элемент в списке, и если это так, система сохраняет его в глобальной переменной для вас доступ. Чтобы получить все свойства элемента, я выбрал dataItem, связанный с выбранным элементом.

var selectedValue = null;


 select: function(e)
    {
      if(e.item.index() > -1)
        {
          selectedValue = this.dataItem(e.item.index());
      alert(selectedValue);
        }
      else 
        {
          //do nothing.
        }          
    }
person David Shorthose    schedule 22.10.2014
comment
Не совсем то, что я искал. Обновил вопрос с уточнением. Спасибо. - person Nate Pink; 23.10.2014