не нажата клавиша ввода - PullRequest
0 голосов
/ 02 мая 2019

Я использую следующий jquery, чтобы перехватить нажатие клавиши ввода, чтобы я мог щелкнуть ссылку (это обходной путь для ошибки DNN ):

var $container = $('div[id$="Login_DNN"]');

$container.keydown(function (event) {
    alert('key press = ' + event.which); //<--- This pops up for all keys but enter

    if(event.which===13){
        //This only works for modern browsers
        if (HTMLElement.prototype.click) {
            $container.find('a[id$="cmdLogin"]')[0].click();
        }
    };
});

Itне работает, хотяЯ поместил предупреждение в функцию keydown для тестирования, и оно правильно отображает нажатие клавиши для каждой нажатой клавиши, кроме той, которая мне действительно нужна, клавиша ввода.

Простой JSFiddle не воспроизводит проблему.Почему это не работает для меня?Ключ ввода был захвачен чем-то другим?

1 Ответ

1 голос
/ 07 мая 2019

Сначала другой код ловил клавишу ввода

В итоге я реализовал другое решение, которое нашел в другом месте.Так как это ошибка DNN, я вошел в \DesktopModules\AuthenticationServices\DNN\Login.ascx и заменил все экземпляры <%#ModuleId%> на <%=ModuleId%>.Затем я переместил проверку нажатия клавиш в ее собственную функцию, чтобы она могла вызываться как при $(document).ready(), так и при частичной обратной передаче.Вот полный сценарий:

<script type="text/javascript">
    /*globals jQuery, window, Sys */
    (function ($, Sys) {
        function setUpLogin() {
            var actionLinks = $("a#dnn_ctr<%=ModuleId > Null.NullInteger ? ModuleId.ToString() : ""%>_Login_Login_DNN_cmdLogin");
            actionLinks.click(function () {
                if ($(this).hasClass("dnnDisabledAction"))

                { return false; }
                actionLinks.addClass("dnnDisabledAction");
            });
        }

        function setUpKeydown() {
            $('.dnnLoginService').on('keydown', function (e) {
                if ($(e.target).is('input:text,input:password') && e.keyCode === 13) {
                    var $loginButton = $('#dnn_ctr<%=ModuleId > Null.NullInteger ? ModuleId.ToString() : ""%>_Login_Login_DNN_cmdLogin');
                    if ($loginButton.hasClass("dnnDisabledAction"))

                    { return false; }
                    $loginButton.addClass("dnnDisabledAction");
                    eval($loginButton.attr('href'));
                    e.preventDefault();
                    return false;
                }
            });
        }

        $(document).ready(function () {
            setUpKeydown(); 
            setUpLogin();

            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () {
                setUpKeydown(); setUpLogin();
            });
        });
    }(jQuery, window.Sys));
</script>  
...