Я пытаюсь создать функцию 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 + "')");
Какие-нибудь советы по кроссбраузерности?
Заранее спасибо.
не пытаюсь быть этим парнем, просто пытаясь охватить все основы: у вас есть синтаксическая ошибка в опубликованном коде, так как в нем отсутствует последняя фигурная скобка
В обработчике событий щелчка объект event - это MouseEvent, а не KeyboardEvent. Объект событий мыши не имеет свойства keyCode. Следовательно, event.keyCode === undefined Не знаю, какие махинации делает Edge, чтобы дать вам keyCode. Также см. KeyboardEvent.keyCode Документация для альтернатив, поскольку keyCode устарел.
Хотя window.event нестандартен, его поддерживают все, кроме Firefox. Вы не описали, что не работает. В консоли разработчика есть ошибки? Вы делали какие-либо журналы или другую отладку?
@CrazyTrain Он просто ничего не делает в хроме и работает так, как задумано в Edge. Никаких ошибок или чего-то подобного.
@Ragnar Как вы отлаживаете? Что значит does nothing? Код вообще срабатывает? Добавьте console.info(event) и console.info(event.keyCode) в начало вашей функции перед оператором if, чтобы увидеть, срабатывает ли код вообще в Chrome, и проверить значения, которые вы получаете, если он запускается. Если событие вообще не привязано и код вообще не запускается, вам нужно посмотреть на возможную проблему, когда ASP.NET не привязывает событие правильно в Chrome.
@Nope Что ж, console.info () проблематична, так как у меня есть странная ошибка, из-за которой нажатие клавиши ввода перенаправляет меня на другую страницу, которая очищает консоль, я не писал никакого кода для этой цели. Это может быть в первую очередь причиной проблем. Честно говоря, я довольно потерян.
@Nope, я также попробовал keyboardeventEvent.keyCode, который визуальная студия просто комментирует, не выдавая мне никаких ошибок.
Думаю, я понял это, функция сработала в chrome и edge, но нажатие Enter по какой-то причине вызывает еще одно событие щелчка, которое перенаправляет меня. Таким образом, нажатие вкладки и ввода работает. Edge выполняет функцию: сначала хром сначала нажимает другую кнопку. Если у кого-то есть предложение исправить это, мы будем признательны.
@Ragnar Чтобы проверить код console.info, просто нажмите любую клавишу при фокусировке на поле ввода, например a, b, c и т. д., ENTER может инициировать отправку, когда я считаю, внутри формы. Возможно, это свойство из того, что я помню, которое может отключить ENTER как отправку.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я вижу, что вы используете 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>
Надеюсь это поможет.
window.event.keyCodeнестандартен. Событие нужно передать функцииbutton_click.