ASP.Net страница ввода ключ, вызывающий пост обратно

У меня есть страница aspx, которая отправляет обратно, когда она не должна. На странице есть два текстовых поля, два списка и две кнопки. если в любой точке нажата клавиша ввода, первая кнопка получает фокус и "щелкает", что приводит к потере выбора в списках.

Как мне отключить это? Есть множество учебников о том, как захватить кнопку ввода и выполнить метод, но я мог бы найти один из них о том, как просто отключить аккуратную функцию "позвольте мне схватить первую найденную кнопку и щелкнуть по ней", упомянутую выше.

6 ответов

Решение
  • Вы можете установить DefaultButton на форму или панель. Таким образом, у вас есть полный контроль над тем, что происходит.
  • Установите UseSubmitBehavior= "False" на своих кнопках. Это отключает "AutoPostback" при вводе.

Я бы предпочел второе, если бы я хотел полностью запретить Postbacks на Enter.

Вы используете JQuery?

если так:

$(document).keypress(function(e)
{
    if(e.keyCode === 13)
    {
        e.preventDefault();
        return false;
    }
});

Используйте приведенный ниже код для отключения клавиши ввода, вызывающей обратную передачу. Этот фрагмент кода блокирует клавишу ввода во всех браузерах 4.0 выше, кроме случаев, когда ввод нажат в текстовой области или на самой кнопке Submit.

<script language="JavaScript">
var nav = window.Event ? true : false;
if (nav) {
window.captureEvents(Event.KEYDOWN);
window.onkeydown = NetscapeEventHandler_KeyDown;
} else {
document.onkeydown = MicrosoftEventHandler_KeyDown;
}

function NetscapeEventHandler_KeyDown(e) {
if (e.which == 13 && e.target.type != 'textarea' && e.target.type != 'submit') { 
return false; 
}
return true;
}

function MicrosoftEventHandler_KeyDown() {
if (event.keyCode == 13 && event.srcElement.type != 'textarea' && 
event.srcElement.type!= 'submit')
return false;
return true;
}
</script>

Только поместите это на свой элемент управления ASP.Net TextBox:

<asp:TextBox ID="TextBox1" runat="server"
   onkeydown = "return (event.keyCode!=13);" >
</asp:TextBox>
<body onkeydown = "return (event.keyCode!=13)">

Это стандартное поведение веб-приложения. Вы можете воспользоваться одним из найденных руководств и скрыть это поведение, просто отказавшись от отправки.

Другие вопросы по тегам