Когда вы создаете страницу aspx как эту:
<%@ Page Language = "C#" AutoEventWireup = "true" CodeFile = "Default.aspx.cs" Inherits = "_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<head runat = "server">
<title>Untitled Page</title>
</head>
<body>
<form id = "form1" runat = "server">
<div>
<asp:TextBox ID = "TextBox1" runat = "server"></asp:TextBox>
<asp:TextBox ID = "TextBox2" runat = "server"></asp:TextBox>
</div>
</form>
</body>
</html>
как можно избежать звукового сигнала, который возникает, когда вы находитесь в текстовом поле и нажимаете клавишу ВВОД.
С другой стороны, я хотел бы обработать событие ввода onkeypress.
Тх!
Какой браузер, ОС вы используете?
Internet Explorer 7.0 / 8.0Beta и Windows Vista SP1 Но это больше связано с браузером.





Вы должны отключить его в настройках звука в своей операционной системе. Это что-то вроде Internet Explorer.
Если это связано с браузером, который использует ваша аудитория, значит, они привыкли, что это происходит, потому что это происходит на всех других сайтах, кроме вашего. Я бы сказал, не о чем беспокоиться - вроде как люди с отключенным JavaScript. Они знают, что их отключили, и поэтому привыкли к сайтам, на которых отсутствует определенная функциональность. Вы не можете заставить их включить его, и вы не можете заставить их выключить звук. Это один из тех опытов, которые вы должны принять в веб-приложениях.
ни того, что я ожидал, так как я хотел бы получить одинаковый опыт для всех моих пользователей
Это происходит не на всех сайтах. Это прямой результат того, как кодируется страница, как описано в других ответах.
Я ничего не делал в asp, но сначала подумал, что это будет похоже на приложение Winforms. Моим первым шагом в решении этой проблемы было бы установить для ключа (кода, кода ключа, как бы он ни был назван в событии) var значение # 0 или null, а также любые переменные, такие как e., обрабатываемые в вызове события до возврата.
Поместите это в свой тег формы onkeypress = "if (event.keyCode==13)return false;"
Во-первых, получение звукового сигнала при нажатии клавиши ввода в текстовом поле на веб-странице НЕ является стандартным. Попробуйте поисковую страницу Google или попробуйте поля «Имя», «Электронная почта» и «Домашняя страница» внизу этой страницы. Ни один из них не пищит при нажатии Enter - ни в одном браузере.
Чтобы предотвратить звуковой сигнал, обработайте событие onKeyDown в теге <INPUT> и верните false, если нажата клавиша ввода:
<input type = "text" name = "TextBox1" value = "" onKeyDown = "return StopBeepOnEnter(event)" />
<script type = "text/javascript">
function StopBeepOnEnter(event)
{
if (event.keyCode == 13)
{
// Do Whatever...
return false; // This stops the beep
}
}
</script>
И вот то же самое с использованием jQuery (я действительно тестировал это, и он решил проблему для меня):
<script type = "text/javascript">
$("#<%=TextBox1.ClientID %>").keydown(function(event)
{
if (event.keyCode == 13)
{
// Do Whatever...
return false; // This stops the beep
}
});
</script>
Я нашел решение в этой теме - спасибо Тарну Джаггару:
Наконец, я могу отключить звуковой сигнал на всех компонентах страницы при нажатии клавиши Enter в текстовом поле или комбо или любом компоненте, который требовался. Что я сделал, так это добавил [onkeypress = "if (event.keyCode == 13) return false;"] в свой тег тела, как показано ниже:
<body onkeypress = "if (event.keyCode==13)return false;">
Я использовал приведенный выше код в своем приложении GWT GXT.
Кришан Баббар
KeyPressEvent.preventDefault(), похоже, помогает в GWT
Здесь нужно отметить пару моментов ...
Предупреждение появится, если кнопка отправки скрыта или если кнопка отправки отсутствует вообще. Это часто случается, если вы вручную накручиваете собственные кнопки <a>, как я обычно (потому что кнопки ОС по умолчанию уродливые). Одна вещь, которую вы можете захотеть изучить, - это использовать <button type = "submit"></button>, потому что вы можете стилизовать их намного больше, чем стандартные кнопки ввода, и они будут обрабатывать ключевые события органично.
Предупреждение все равно появится, если вы перехватите keyCode 13 на keyup или keydown. Я не знаю, что это за события, но вы должны использовать keypress. Это то, что я обычно делаю с jQuery на глобальном уровне ...
$("input[type=text],input[type=password]").keypress(function(e) {
if (e.keyCode == 13) {
$(this).closest("form").trigger("submit");
e.preventDefault();
}
});
А затем на уровне страницы я перехватываю событие отправки и выполняю свои процедуры проверки ...
$("form").submit(function(e) {
var txt = $("#txtUser");
if (txt.val().length == 0) {
alert("Who are you?");
txt.focus();
e.preventDefault();
}
});
Кажется, это происходит, если есть более одного текстового поля и нет кнопки отправки. И решение, которое сработало для меня, - это вернуть false конкретно из события нажатия клавиши.
Другой интересный момент заключается в том, что этого не происходит, если в форме есть только одно текстовое поле. Я подозреваю, что это пережиток функции ISINDEX в ранней версии HTML, которая обрабатывала отдельное текстовое поле определенным образом ... давно не думал об этом!
Это будет веб-решение, поэтому я не смогу отключить его для каждого пользователя. Есть ли способ избежать этого?