Избегайте звукового сигнала при вводе нажатия клавиш в текстовом поле - PullRequest
7 голосов
/ 14 января 2009

Когда вы создаете страницу 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>

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

С другой стороны, я бы хотел обработать событие enter onkeypress.

Tx!

Ответы [ 8 ]

10 голосов
/ 29 июля 2009

Прежде всего, это НЕ стандартное поведение, чтобы получить звуковой сигнал при нажатии Enter в текстовом поле на веб-странице. Попробуйте страницу поиска 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>

Я нашел решение в этой теме - кредит Тарну Джаггару:

http://codingforums.com/showthread.php?t=36491

4 голосов
/ 24 мая 2011

Несколько вещей, на которые стоит обратить внимание ...

  1. Предупреждение будет появляться, если кнопка отправки скрыта или если кнопка отправки вообще отсутствует. Это часто бывает, если вы катите свои собственные кнопки <a> вручную, как я обычно делаю (потому что кнопки ОС по умолчанию уродливы). Вы можете захотеть рассмотреть одну вещь, используя <button type="submit"></button>, потому что их можно стилизовать намного больше, чем стандартные кнопки ввода, и они будут обрабатывать ключевые события органично.

  2. Предупреждение будет по-прежнему появляться, если вы перехватите ключевой код 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();
      }
    });
    

    А затем на уровне страницы я перехватываю событие submit и выполняю процедуры проверки ...

    $("form").submit(function(e) {
      var txt = $("#txtUser");
      if(txt.val().length == 0) {
        alert("Who are you?");
        txt.focus();
        e.preventDefault();
      }
    });
    
1 голос
/ 09 февраля 2009

Поместите это в свой тег формы onkeypress="if(event.keyCode==13)return false;"

0 голосов
/ 28 января 2010

KeyPressEvent.preventDefault(), кажется, делает трюк в GWT

0 голосов
/ 25 ноября 2009

Наконец, я могу отключить звуковой сигнал на всех компонентах страницы, нажимая клавишу Enter в текстовом поле или в комбинированном или любом другом компоненте, что было необходимо. Я добавил [onkeypress = "if (event.keyCode == 13) return false;"] в теге body, как показано ниже:

   <body onkeypress="if(event.keyCode==13)return false;">

Я использовал указанный выше код в своем приложении GWT GXT.

Кришан Баббар

0 голосов
/ 14 января 2009

Я ничего особо не делал в asp, но я сначала подумал, что это будет похоже на приложение Winforms. Моим первым шагом в решении этой проблемы было бы установить ключ (код, код ключа, как бы он ни назывался в событии) var на # 0 или ноль, а также любые переменные, такие как e.handled в вызове события до возврата.

0 голосов
/ 14 января 2009

Если это связано с браузером, который использует ваша аудитория, то они привыкли к тому, что это происходит, потому что это происходит на любом другом сайте, кроме вашего. Я бы сказал, что об этом не стоит беспокоиться - вроде людей с отключенным JavaScript. Они знают, что у них это отключено, и они привыкли к сайтам, у которых в результате не хватает определенной функциональности. Вы не можете заставить их включить его, и вы не можете заставить их отключить звук. Это один из тех опытов, которые вы должны принять в веб-приложениях.

0 голосов
/ 14 января 2009

Вы должны отключить его в настройках звука в операционной системе. Это вещь Internet Explorer.

...