Как я могу обнаружить событие нажатия клавиш, которое будет включать два варианта «удаления» клавиш Mac? - PullRequest
0 голосов
/ 26 апреля 2018

В моем приложении есть текстовая область. Над ней расположена кнопка «Сохранить», которая реагирует на любое событие нажатия клавиши в текстовой области, изменяя его цвет фона, чтобы предупредить пользователя «сохранить» отредактированный текст в базе данных, нажав эту кнопку.

$(".panelText").on("keydown","textarea",function() { 
    console.log("Keydown in textarea!");
    var textID=$(this).closest('.text').attr('id');  
    $('#'+textID).find('.saveText').addClass('textChanged');
});

Похоже, что Mac / Safari не генерирует событие «нажатие клавиши» или «нажатие клавиши», когда нажата любая из двух вариаций клавиши «удалить» Mac. Когда я запускаю Chrome на Mac, он отлично работает как для «нажатия клавиш», так и для «нажатия клавиш» так же, как и в любом браузере, который я тестирую в системах Win10. В Mac / Safari и других протестированных браузерах все другие клавиши, которые могли изменить текст, запускаются либо для «нажатия клавиш», либо для «нажатия клавиш».

Я обнаружил это после покупки отремонтированной системы Mac OSX для тестирования моего приложения на устройствах Apple, особенно. с Safari, так как я считаю, что многие пользователи используют этот браузер. Я довольно незнаком с миром Mac. Но если я прав, что событие не запускается для этих двух ключей в Safari, как я могу заставить это работать в обоих мирах?

Изменить / добавлено 9/27 около 10:00

Я нашел очень полезный сайт для работы с событиями kbd на разных платформах, в браузерах и ОС. https://www.quirksmode.org/js/keys.html

Используя это, я обнаружил, что на моей платформе Mac OSX / Safari

(backspace) ключ удаления создает событие 'keydown', keyCode: 8, charCode: 0 и ключ удаления создает событие keydown, keyCode: 46, charCode: 0

Итак, похоже, что событие 'keydown' запускается для обоих ключей удаления, но мое приложение по какой-то причине его не видит, как предложил Даниэль ниже. Возможно, мое приложение каким-то образом блокирует событие, но только на платформе Mac / Safari. И приложение скрипки не блокирует его ни на одной платформе. Я думаю, мне просто придется начать удалять части моего приложения, пока я не изолирую проблему.

1 Ответ

0 голосов
/ 26 апреля 2018

Просто попробуйте keyup

$(".panelText").on("keyup","textarea",function() { 
    console.log("Keydown in textarea!");
    var textID=$(this).closest('.text').attr('id');  
    $('#'+textID).find('.saveText').addClass('textChanged');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...