7

当您创建一个 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 键时,如何避免发出哔哔声。

另一方面,我想处理 enter onkeypress 事件。

发送!

4

8 回答 8

10

首先,在网页上的文本框中按下回车键时发出哔哔声不是标准行为。试试谷歌的搜索页面,或者试试这个页面底部的名称、电子邮件和主页字段。在任何浏览器中按下回车键时,它们都不会发出哔哔声。

为防止发出哔声,请处理标签上的 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>

我在这个线程上找到了解决方案 - 归功于 Tharn Jaggar:

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

于 2009-07-29T03:09:25.057 回答
4

这里有几点需要注意...

  1. 如果提交按钮被隐藏或根本没有提交按钮,则会出现警报。如果您<a>像我通常那样手动滚动自己的按钮,通常会出现这种情况(因为默认的操作系统按钮很难看)。您可能想要研究的一件事是使用<button type="submit"></button>,因为您可以为它们设置比标准输入按钮更多的样式,并且它们将有机地处理关键事件。

  2. 如果您在keyup或上拦截 keyCode 13,警报仍然会发生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();
      }
    });
    
于 2011-05-24T17:26:10.487 回答
1

把它放在你的表单标签中onkeypress="if(event.keyCode==13)return false;"

于 2009-02-08T21:23:32.570 回答
0

您必须在操作系统的声音首选项中将其关闭。这是 Internet Explorer 的事情。

于 2009-01-13T23:51:41.117 回答
0

如果它与您的受众正在使用的浏览器有关,那么他们已经习惯了它的发生,因为它发生在除您之外的所有其他网站上。我会说这不值得担心 - 有点像关闭 JavaScript 的人。他们知道他们已将其关闭,因此他们习惯了缺乏某些功能的网站。你不能强迫他们打开它,也不能强迫他们把声音关掉。这是您必须在网络应用程序中接受的体验之一。

于 2009-01-14T01:00:59.790 回答
0

我没有在asp中做过很多事情,但我的第一个想法是它类似于Winforms应用程序。我解决它的第一步是将键(代码、键码、事件中的任何名称)var 设置为#0 或 null,以及返回之前在事件调用中的任何 var,例如 e.handled。

于 2009-01-14T02:34:08.073 回答
0

最后,我可以在文本字段或组合或任何组件中按 Enter 键时禁用页面所有组件上的哔声,这是必需的。我所做的是在我的正文标签中添加了 [onkeypress="if(event.keyCode==13)return false;"] ,如下所示:

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

我在我的 GWT GXT 应用程序中使用了上面的代码。

克里尚巴巴尔

于 2009-11-25T10:53:50.860 回答
0

KeyPressEvent.preventDefault() 似乎在 GWT 中成功了

于 2010-01-28T10:44:44.347 回答