Функция Javascript работает только в краю, а не в Chrome, Firefox или Opera

Я пытаюсь создать функцию js, которая работает во всех браузерах. Я использую следующую функцию, чтобы нажимать кнопку, когда пользователь нажимает кнопку ввода и нажимает на текстовое поле (asp)

Эта функция javascript работает только в Edge, но не в Chrome, Firefox или Opera:

function button_click(objTextBox, objBtnID) {
    if (window.event.keyCode === 13) {
        document.getElementById(objBtnID).focus();
        document.getElementById(objBtnID).click();
    }
}

код cs:

Password.Attributes.Add("onkeypress", "button_click(this,'" + LogIn.ClientID + "')");

Какие-нибудь советы по кроссбраузерности?

Заранее спасибо.

window.event.keyCode нестандартен. Событие нужно передать функции button_click.
Cerbrus 25.04.2018 16:35

не пытаюсь быть этим парнем, просто пытаясь охватить все основы: у вас есть синтаксическая ошибка в опубликованном коде, так как в нем отсутствует последняя фигурная скобка

mikkelrd 25.04.2018 16:37

В обработчике событий щелчка объект event - это MouseEvent, а не KeyboardEvent. Объект событий мыши не имеет свойства keyCode. Следовательно, event.keyCode === undefined Не знаю, какие махинации делает Edge, чтобы дать вам keyCode. Также см. KeyboardEvent.keyCode Документация для альтернатив, поскольку keyCode устарел.

Nope 25.04.2018 16:45

Хотя window.event нестандартен, его поддерживают все, кроме Firefox. Вы не описали, что не работает. В консоли разработчика есть ошибки? Вы делали какие-либо журналы или другую отладку?

user2437417 25.04.2018 16:45

@CrazyTrain Он просто ничего не делает в хроме и работает так, как задумано в Edge. Никаких ошибок или чего-то подобного.

Ragnar 25.04.2018 17:02

@Ragnar Как вы отлаживаете? Что значит does nothing? Код вообще срабатывает? Добавьте console.info(event) и console.info(event.keyCode) в начало вашей функции перед оператором if, чтобы увидеть, срабатывает ли код вообще в Chrome, и проверить значения, которые вы получаете, если он запускается. Если событие вообще не привязано и код вообще не запускается, вам нужно посмотреть на возможную проблему, когда ASP.NET не привязывает событие правильно в Chrome.

Nope 25.04.2018 17:09

@Nope Что ж, console.info () проблематична, так как у меня есть странная ошибка, из-за которой нажатие клавиши ввода перенаправляет меня на другую страницу, которая очищает консоль, я не писал никакого кода для этой цели. Это может быть в первую очередь причиной проблем. Честно говоря, я довольно потерян.

Ragnar 25.04.2018 17:35

@Nope, я также попробовал keyboardeventEvent.keyCode, который визуальная студия просто комментирует, не выдавая мне никаких ошибок.

Ragnar 25.04.2018 18:02

Думаю, я понял это, функция сработала в chrome и edge, но нажатие Enter по какой-то причине вызывает еще одно событие щелчка, которое перенаправляет меня. Таким образом, нажатие вкладки и ввода работает. Edge выполняет функцию: сначала хром сначала нажимает другую кнопку. Если у кого-то есть предложение исправить это, мы будем признательны.

Ragnar 25.04.2018 19:05

@Ragnar Чтобы проверить код console.info, просто нажмите любую клавишу при фокусировке на поле ввода, например a, b, c и т. д., ENTER может инициировать отправку, когда я считаю, внутри формы. Возможно, это свойство из того, что я помню, которое может отключить ENTER как отправку.

Nope 26.04.2018 12:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
10
320
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я вижу, что вы используете asp.net. Вы можете использовать этот пример в html-коде, чтобы выбрать кнопку по умолчанию, которая будет активирована нажатием Enter.

<asp:Panel ID = "Panel1" runat = "server" DefaultButton = "LogIn">
        <p class = "InfoText">Username:</p>
        <asp:TextBox ID = "Username" runat = "server"></asp:TextBox>
        <p class = "InfoText">Password:</p>
        <asp:TextBox ID = "Password" runat = "server" TextMode = "Password"></asp:TextBox>
</asp:Panel>

Надеюсь это поможет.

Другие вопросы по теме