запускает событие выпадающего списка мгновенно (в идеале jQuery) - PullRequest
1 голос
/ 25 мая 2011

Это связано с Событием Fire каждый раз, когда элемент DropDownList выбирается с помощью jQuery и Как вызвать событие раскрывающегося списка мгновенно? , но ответы там не дают того, что яneed.

Учитывая выпадающий выбор в HTML с jQuery + JavaScript и возможность взаимодействия с мышью или клавиатурой, я хочу написать такой код, чтобы действие запускалось не только при окончательном выборе (событие «change»)), но также когда пользователь использует стрелку вверх или вниз на клавиатуре, чтобы изменить выбор, не используя клавишу ввода для подтверждения выбора.В частности, в раскрывающемся списке для выбора цвета я хотел бы постоянно менять цвет образца, когда пользователь перемещается вверх или вниз по опциям.

Следующий код частично основан на обсуждении в Событие Fire каждый раз, когда элемент DropDownList выбирается с помощью jQuery , но «выигрышная» версия там не работает, когда клавиатура используется для выбора, и это довольно полный сбой в Safari и Google Chrome.Мой код здесь отлично работает во всех последних версиях Firefox, и он отлично работает для действий на основе мыши в Chrome и Safari;однако в Chrome, когда пользователь работает с клавиатурой, единственное событие, которое я могу зафиксировать, это «изменение»;То же самое для Safari, для чего это стоит.

  (function($) {
      $.fn.dropdownSelect = function(fn) {
          return this.each(function() {
              // I'd expect this to be the normal case for selecting with mouse, but only seems to work in Firefox.    
              $('option', this).click(function() {
                  fn();
              });
              // Selection via arrow keys. Only seems to work in Firefox.  
              $(this).keyup(function() {
                  fn();
              });
              // Next case is crucial for Safari and Chrome, should be harmless for Firefox.
              $(this).change(function() {
                  fn();
              });
          });
      }
  })(jQuery);

Затем я вызываю его так:

$('#color-dropdown').dropdownSelect(function () {
     // Act on it here.
});

Я пытался проверить также событие '' нажатие клавиши '', но безрезультатно,Есть идеи?

1 Ответ

0 голосов
/ 25 мая 2011

Вы хотите «keydown».Событие нажатия клавиши не захватывает функции управления, такие как стрелки.

...