2010-01-21 4 views
0

Я надеюсь, что кто-то может помочь. Приложение asp.net демонстрирует странное поведение. Всякий раз, когда я нажимаю клавишу Return/Enter, я получаю серию звуковых сигналов. Это похоже на dindindidindindinggggg!IE вход beeping

Я воспроизвел этот вопрос с небольшим примером приложением:

<%@ Page Language="Oxygene" AutoEventWireup="true" CodeFile="Default.aspx.pas" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:TextBox ID="TextBox1" runat="server"> 
     </asp:TextBox> 
     <asp:TextBox ID="TextBox2" runat="server"> 
     </asp:TextBox> 
    </form> 
</body> 
</html> 

Это происходит только в IE, в Firefox и хром нет писка.

Кроме того, в качестве побочной проблемы, если я удаляю одно из текстовых полей, тогда нет никакого дингета, но вместо этого я получаю сообщение.

Кто-нибудь знает, что здесь происходит?

Спасибо,

AJ

ответ

0

Я нашел ответ:

<%@ Page Language="Oxygene" AutoEventWireup="true" CodeFile="Default.aspx.pas" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 

    <html xmlns="http://www.w3.org/1999/xhtml" > 
    <head runat="server"> 
     <title>Untitled Page</title> 
    </head> 
    <body onkeypress="if(event.keyCode==13)return false;"> 
     <form id="form1" runat="server" onsubmit="return false;"> 
      <asp:TextBox ID="TextBox1" runat="server"> 
      </asp:TextBox> 
      <asp:TextBox ID="TextBox2" runat="server"> 
      </asp:TextBox> 
     </form> 
    </body> 
    </html> 

Это останавливает подачу звукового сигнала и останавливает пост-обратно, когда только один входной элемент.

3

ввода ключа имеет представить поведение для форм. Звук, который вы слышите, - это способ Internet Explorer сказать, что он не может отправить форму, так как нет кнопки отправки.

Это не что-то конкретное .NET, а скорее неотъемлемая часть того, как IE общается с пользователем. Быстрый тест, извините за неряшливый HTML:

форма с не кнопка отправки будет издавать звуковой сигнал, когда пользователь пытается отправить его:

<form><input /><input /></form> 

Добавление кнопки отправки получит вам звук щелчка от формы их представления вместо:

<form><input/><input/><input type="submit" /></form> 

Вы можете избавиться от этого звука, предотвращая представить:

<form onsubmit="return false;"><input/><input/><input type="submit" /></form> 

Тогда единственная проблема в том, что кнопка показывает, что, я думаю, не то, что вы хотите. Оказывается, что скрывает это сделает первый звук снова появляется, что неудивительно:

<form onsubmit="return false;"> 
    <input/><input/> 
    <input type="submit" style="display: none;"/> 
</form> 

Здесь кнопка скрыта, и поэтому браузер ведет себя, как и в первом сценарии, где нет ни одной кнопки. Но если мы прячем его в более сложный путь, так что браузер не может быть уверен, что он не появляется, мы можем обойти эту проблему тоже:

<form onsubmit="return false;"> 
    <input/><input/> 
    <input type="submit" style="background-color: transparent; border: 0;" value="" /> 
</form> 

Теперь, следует отметить, что в этом последнем растворе , там все равно будет кнопка, которую пользователь не может видеть, но может щелкнуть в любом случае (он не будет отправлен, tho). Я не защищаю это, но если вы собираетесь с этим решением, вы, вероятно, хотите установить ширину и высоту на что-то действительно маленькое. Мое стремление заключалось не в том, чтобы придумать лучший хак, а просто для того, чтобы создать серию поучительных примеров, которые иллюстрируют, почему браузер ведет себя так, как это было в определенных ситуациях.

+0

ОК, что имеет смысл, так что я могу уловить сигнал или добавить пустую кнопку отправки? –

+0

уверен, см. Мое редактирование =) –

+0

+1 - Хороший подробный ответ. –

0

Ну, у вас нет кнопки «Отправить», чтобы она могла сообщить вам, что автоматическая обработка после обратной связи отсутствует. Это было бы моим первым догадком.

+0

Хорошо, да, у меня нет автоматической обратной связи, но это потому, что мое настоящее приложение - это все AJAX. Возможно ли улавливать звуковой сигнал? –

Смежные вопросы