2015-10-01 1 views
1

Я работаю над добавлением элементов управления на клавиатуре для датпикера для обеспечения доступности. Я хочу использовать кнопки pageup и pagedown для переключения между следующим и предыдущими месяцами. В качестве части кода я использую e.preventDefault, чтобы предотвратить прокрутку страницы вверх или вниз, только когда открыт датпикер. Я работаю в Firefox и IE, но не в Chrome или Safari.preventDefault не работает на странице или pagedown в Chrome или Safari

Я не размещаю полный код здесь, но я создал тестовый код ниже. Независимо от того, что я пытаюсь, страница все еще прокручивается вверх/вниз, когда эти клавиши нажимаются в Chrome или Safari. Я не могу использовать кнопки вверх, вниз, влево или вправо, потому что они используются для навигации по фокусу между днями в течение каждого месяца.

$(window).keyup(function(e) { 
    console.log(e.keyCode); 
    if(e.keyCode === 34) { 

     console.log('page down'); 

     e.preventDefault(); 
     e.stopPropagation; 
     e.stopImmediatePropagation(); 
     return false; 
} 
+0

Есть синтаксические ошибки в вашем примере кода. Не могли бы вы исправить их? – Anders

ответ

3

Есть пара вопросов с кодом.

Вы не можете предотвратить действие ключа по умолчанию на keyup. К тому времени код уже запущен. Он должен быть на keydown.

Вторая проблема заключается в том, что keyCode является целым числом, а не строкой, поэтому ваш оператор if не будет введен.

http://jsfiddle.net/ymr744p4/

$(window).keydown(function(e) { 
    console.log(e.keyCode); 
    if(e.keyCode === 34) { 
     console.log('page down'); 
     e.preventDefault(); 
    } 
}); 
+0

Спасибо. Обычно я использую keyup, но keydown имеет смысл теперь, когда я понимаю порядок, в котором происходят keydown, keypress и keyup. – depiction

 Смежные вопросы

  • Нет связанных вопросов^_^