2009-01-13 9 views
7

Cuando se crea una página aspx como éste:evitar el sonido bip cuando ingrese pulsación de tecla en un cuadro de texto

<%@ 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> 

cómo se puede evitar el sonido de aviso que sucede cuando usted está en un cuadro de texto y pulsa enter.

Por otro lado, me gustaría manejar el evento enter onkeypress.

Tx!

+0

Esta sería una solución web, por lo que no podré deshabilitarla para cada usuario. Hay alguna manera de evitarlo? – user54517

+0

¿Qué navegador, sistema operativo está usando? –

+0

Internet Explorer 7.0/8.0Beta y Windows Vista SP1 Pero está más relacionado con el navegador. – user54517

Respuesta

0

Si está relacionado con el navegador que está usando su audiencia, entonces están acostumbrados a que ocurra, porque ocurre en cualquier otro sitio además del suyo. Diría que no vale la pena preocuparse, algo así como gente con JavaScript desactivado. Saben que lo tienen apagado, y están acostumbrados a sitios que carecen de ciertas funcionalidades como resultado. No puede obligarlos a encenderlo, y no puede obligarlos a apagar el sonido. Es una de esas experiencias que debes aceptar en las aplicaciones web.

+0

ni lo que esperaba, ya que me gustaría obtener la misma experiencia para todos mis usuarios – user54517

+0

No ocurre en todos los sitios. Es un resultado directo de cómo la página es códigos como se explica en otras respuestas. –

0

Tiene que desactivarlo en sus preferencias de sonido en su sistema operativo. Es una cosa de Internet Explorer.

0

No he hecho mucho de nada en asp, pero mi primer pensamiento es que sería similar a una aplicación de Winforms. Mi primer paso para resolverlo sería establecer la clave (código, código clave, cualquiera que sea el nombre en el evento) var en # 0 o nulo, así como cualquier variable como e.handled en la llamada al evento antes de volver.

1

poner esto en su formulario de etiqueta onkeypress="if(event.keyCode==13)return false;"

10

Primero de todo, no es el comportamiento estándar para obtener un pitido al pulsar entrar en un cuadro de texto en una página web. Prueba la página de búsqueda de Google, o prueba los campos Nombre, Correo electrónico y Página de inicio en la parte inferior de esta página. Ninguno de ellos emite un pitido al presionar Enter en cualquier navegador.

Para evitar que el sonido, controlar el evento onKeyDown en su etiqueta <INPUT> y devolver false si se presiona la tecla enter:

<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> 

Y aquí es lo mismo usando jQuery (De hecho, he probado esto y se resolvió el problema para mí):

<script type="text/javascript"> 
    $("#<%=TextBox1.ClientID %>").keydown(function(event) 
    { 
     if (event.keyCode == 13) 
     { 
      // Do Whatever... 

      return false; // This stops the beep 
     } 
    }); 
</script> 

he encontrado la solución en este hilo - crédito para Tharn Jaggar:

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

0

Finalmente puedo desactivar el pitido en todos los componentes de la página mientras presiono la tecla Entrar en el campo de texto o combo o cualquier componente que sea necesario. Lo que hice es añadí [onkeypress = "si (== event.keyCode 13) return false;"] en mi cuerpo de la etiqueta como figura a continuación:

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

que utiliza el código anterior en mi aplicación GWT GXT.

Krishan Babbar

0

KeyPressEvent.preventDefault() parece hacer el truco en GWT

4

Un par de cosas a destacar aquí ...

  1. La alerta se producirá si el botón de enviar se oculta o si no hay ningún botón de enviar en absoluto. Este suele ser el caso si mueve sus propios botones <a> como hago habitualmente (porque los botones del sistema operativo predeterminados son feos). Una cosa que puede interesarle es usar <button type="submit"></button> porque puede diseñarlos mucho más que los botones de entrada estándar y manejarán los eventos clave de forma orgánica.

  2. La alerta seguirá apareciendo si intercepta el código de clave 13 en keyup o keydown. No sé de qué se trata estos eventos, pero debes usar keypress. Esto es lo que suele hacer con jQuery a nivel mundial ...

    $("input[type=text],input[type=password]").keypress(function(e) {  
        if(e.keyCode == 13) { 
        $(this).closest("form").trigger("submit"); 
        e.preventDefault(); 
        } 
    }); 
    

    Y luego en la trampa de nivel de página que el evento someterse y hacer mis rutinas de validación ...

    $("form").submit(function(e) { 
        var txt = $("#txtUser"); 
        if(txt.val().length == 0) { 
        alert("Who are you?"); 
        txt.focus(); 
        e.preventDefault(); 
        } 
    }); 
    
+1

Parece que ocurre si hay más de un cuadro de texto y ningún botón de enviar. Y la solución que funcionó para mí es devolver falso del evento de pulsación de tecla específicamente. –

+1

La otra cosa interesante es que no parece suceder si el formulario solo tiene un cuadro de texto. Sospecho que esto es un vestigio de la función ISINDEX en la versión inicial de HTML que manejaba un solo cuadro de texto de una manera específica ... ¡no he pensado en eso en mucho tiempo! –

Cuestiones relacionadas