在文本框中输入按键时,请避免发出哔声

时间:2009-01-13 22:51:45

标签: asp.net javascript onkeypress

当你创建一个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 个答案:

答案 0 :(得分:10)

首先,当在网页上的文本框中按Enter键时,发出蜂鸣声并非标准行为。试试Google的搜索页面,或者就此而言,请尝试本页底部的“名称”,“电子邮件”和“主页”字段。在任何浏览器中按Enter键时都不会发出蜂鸣声。

要防止发出哔哔声,请处理<INPUT>标记上的onKeyDown事件,如果按下回车键则返回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

答案 1 :(得分:4)

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

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

  2. 如果您拦截keyupkeydown上的keyCode 13,则仍会出现提醒。我不知道这些事件是什么,但你必须使用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();
      }
    });
    

答案 2 :(得分:1)

将其放在表单标记onkeypress="if(event.keyCode==13)return false;"

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

我在asp中没有做太多的事情,但我首先想到的是它类似于Winforms应用程序。解决问题的第一步是将密钥(代码,密钥代码,事件中的任何名称)var设置为#0或null,以及在返回之前的事件调用中的任何变量(例如e.handled)。 / p>

答案 6 :(得分:0)

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

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

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

Krishan Babbar

答案 7 :(得分:0)

KeyPressEvent.preventDefault()似乎在GWT中诀窍