Не могу открыть модал с помощью 'keydown' - PullRequest
1 голос
/ 11 июля 2019

У меня есть закодированная actionlink, которая при нажатии открывает модальное всплывающее окно. Для того, чтобы сделать мое приложение доступным, мне нужно иметь возможность открывать модальное окно также нажатием клавиши (пробел). Нажатие работает нормально, но нажатие клавиши - нет. Пожалуйста, помогите.

Закодированная actionlink:

@Html.EncodedActionLink(
    "Preview", 
    "Preview", 
    "Forms", 
    new { 
        stagingId = Model.FormData.StagingNotificationId 
    },
    new { 
        @class = "'modal-link btn btn-success'", 
        id = "decSave" 
    })

Код клика, который работает с мышью:

 $(function() {
     $('body').on('click', '.modal-link', function(e) {
         e.preventDefault();
         $(this).attr('data-target', '#modal-container');
         $(this).attr('data-toggle', 'modal');
     });
 });

Код нажатия клавиши (срабатывает, но не открывается модально):

$(function() {
    $('body').on('keydown', '.modal-link', function(e) {
        if (e.which == 32) {

            alert('test')

            e.preventDefault();
            $(this).attr('data-target', '#modal-container');
            $(this).attr('data-toggle', 'modal');
        }
    });
});

1 Ответ

1 голос
/ 11 июля 2019

Просто потому, что событие click распространяется и запускает модальный щелчок, когда нажатие клавиши не делает этого.

Попробуйте это

$(function () {
    $('body').on('keydown', '.modal-link', function (e) {
        if (e.which == 32) {
            $(this).trigger("click")
        }
    });
});
...