当用户在文本框中按下回车键时,我能取消postback吗?

6

我有一个文本框,其输入由jQuery处理。

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

当我在文本框中按下回车键时,会触发postback,这会导致一切混乱。我该如何捕获回车键并忽略它?
(提前预防可能的建议:文本框必须是 - 我无法用替换它。)
3个回答

13

当您按下回车键时,浏览器会自动提交表单。要取消这个功能,请在updateSearchTextBox函数中添加return false。

如果那样不起作用,请尝试这个:

<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)");

2
内联脚本事件很糟糕...要避免使用它们。我知道asp.net喜欢它们,但是...这是我生命中的痛苦。 - redsquare

1

0

感谢所有回复的人。这是我的新的 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();
    }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接