Можно ли отменить обратную передачу, когда пользователь нажимает кнопку возврата в текстовом поле? - PullRequest
6 голосов
/ 17 октября 2008

У меня есть textbox, чей ввод обрабатывается jQuery.

$('input.Search').bind("keyup", updateSearchTextbox);

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

(Просто чтобы исключить одно возможное предложение: текстовое поле должно быть <asp:textbox ... /> - я не могу заменить его <input ... />.)

Ответы [ 3 ]

13 голосов
/ 17 октября 2008

Ваш браузер автоматически отправляет форму, когда вы нажимаете Enter. Чтобы отменить это, добавьте 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)");
1 голос
/ 17 октября 2008

У Бена Наделя есть отличный пост в блоге о том, как сделать это с JQuery: http://www.bennadel.com/blog/1364-Ask-Ben-Optimizing-Form-Inputs-For-Numeric-Keypad-Usage.htm

0 голосов
/ 17 октября 2008

Спасибо всем, кто откликнулся. Вот моя новая функция 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();
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...