2010-02-02 3 views
5
.

У меня настоящая головная царапина: у меня есть страница с несколькими элементами управления и ASP: Button или два. Когда я нахожусь в элементе управления и нажимаю клавишу Enter, он действует так, как будто я нажал кнопку «Отправить», которую я на самом деле не хочу делать в этот момент.Нажмите кнопку запуска, нажав кнопку - но я не хочу, чтобы она была

Кнопка не находится в ASP: Panel с набором DefaultButton, у нее нет атрибута OnClientClick, я не вижу JavaScript, который следит за клавишей Enter ... Почему он запускает?

Если я создаю стандартную страницу .ASPX и поставлю на нее текстовое поле и кнопку, запустите его и нажмите клавишу ввода, кнопка будет проигнорирована, например. событие click не срабатывает. Это поведение, которое я ожидаю, но не получаю.

Одним словом, что еще может заставить кнопку подумать, что это кнопка по умолчанию для страницы?

Спасибо,

Майк К.


Хорошо, вот мой тест разметки страницы:

<p><asp:Label ID="uxNameL" runat="server" AssociatedControlID="uxName">Name</asp:Label><asp:TextBox ID="uxName" runat="server"></asp:TextBox></p> 
<p><asp:Button id="uxSubmit" runat="server" Text="Submit" onclick="uxSubmit_Click" /></p> 
<asp:Literal ID="uxOut" runat="server" EnableViewState="false"></asp:Literal> 

Вот что происходит в коде:

protected void uxSubmit_Click(object sender, EventArgs e) 
    { 
     uxOut.Text = uxName.Text; 
    } 

Когда Я запустил страницу и текст в текстовом поле и нажмите Enter - ha, вы бы посмотрели на это: в IE 8 событие кнопки игнорируется, например. страница только перезагружается, но в FF она представляет форму ...

Хммммм.

ответ

8

Я верю (и поддаюсь исправлению), но если у вас есть форма, с кнопкой ввода типа submit, то, когда вы нажмете enter, она выстрелит в эту кнопку.

+0

На тестовой странице, которую я настроил, выдается , но при этом не запускается кнопка submit: -s –

+0

Пожалуйста, посмотрите мой собственный ответ на разницу в IE8 и FF ... Самое странное. –

1

Я на самом деле пытался играть с ним в Firebug сейчас, и кажется, что это стандартное поведение браузера, то есть он не имеет ничего общего с Javascript или ASP. Если у вас есть кнопка отправки и текстовое поле, она просто отправляется при вводе. Измените тип входа на кнопку, чтобы избежать его.

+0

Пожалуйста, см. Мой собственный ответ на разницу в IE8 и FF ... Самое странное. –

4

Если вы не хотите, чтобы ввести ключ для запуска, может быть, вы можете добавить этот JS-код вашей страницы:

if (window.event.keyCode == 13) 
{ 
    event.returnValue=false; 
    event.cancel = true; 
} 

Вы должны вызвать эту функцию с помощью обработчика OnKeyDown на <body> тегом стр.

0

) HTML код:

<form method="post" action="add_data.php" id="master_form"> 
<input type='text' name='user-mail' /> 
<input type="button" value="Submit" onclick="submitform();" /> 
</form> 

Javascript код:

function submitform() 
{ 
document.getElementById('master_form').submit(); 
} 
13

Обычно

<asp:Button ID="button" UseSubmitBehavior="false"/> 

работы. Но вам может потребоваться отключить backspace в вашем приложении, которое вернет вам 1 страницу в вашей недавней истории.

+1

Я также считаю важным отметить, что если вы используете 'UseSubmitBehavior =" false "', это не только не даст ему ответить на кнопку ввода, но и остановит событие нажатия кнопки, которое будет поднято в коде, когда вы нажмите кнопку, которая не может быть предполагаемым последствием. – Hawkeye

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