У меня есть textbox, ввод которого обрабатывается jQuery.
$('input.Search').bind("keyup", updateSearchTextbox);
Когда я нажимаю Enter в текстовом поле, я получаю обратную передачу, которая все портит. Как я могу поймать этот Enter и проигнорировать его?
(Просто чтобы предупредить одно возможное предложение: текстовое поле должно быть <asp:textbox ... /> - я не могу заменить его на <input ... />.)





Ваш браузер автоматически отправляет форму, когда вы нажимаете клавишу ввода. Чтобы отменить это, добавьте return false в функцию updateSearchTextBox.
если это не сработает, попробуйте следующее:
<script language = "JavaScript">
function disableEnterKey(e)
{
var key;
if (window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
return (key != 13);
}
</script>
И в вашем коде:
textbox.Attributes.Add("OnKeyPress","return disableEnterKey(event)");
У Бена Наделя есть отличный пост в блоге о том, как это сделать с помощью JQuery: http://www.bennadel.com/blog/1364-Ask-Ben-Optimizing-Form-Inputs-For-Numeric-Keypad-Usage.htm
Спасибо всем, кто откликнулся. Вот моя новая функция updateSearchTextbox, которая отлично работает:
updateSearchTextbox = function(e) {
/// <summary>
/// Handles keyup event on search textbox
/// </summary>
if (e.which == "13") {
// update now
updateConcessions();
// Don't post back
return (false);
} else {
delayedUpdateConcessions();
}
}
события встроенного скрипта - нафиг .... избегайте их. Я знаю, что они нравятся asp.net, но ... грррр моя жизнь