当用户在文本框中按下返回时,我可以取消回发吗?

Posted

技术标签:

【中文标题】当用户在文本框中按下返回时,我可以取消回发吗?【英文标题】:Can I cancel postback when user presses return in a textbox? 【发布时间】:2010-09-17 15:27:19 【问题描述】:

我有一个textbox,其输入由 jQuery 处理。

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

当我在文本框中按Enter 时,我会收到一个回发,这会搞砸一切。如何捕获该 Enter 并忽略它?

(只是为了抢占一个可能的建议:文本框必须是 <asp:textbox ... /> - 我不能用 <input ... /> 替换它。)

【问题讨论】:

【参考方案1】:

当您按 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)");

【讨论】:

内联脚本事件很糟糕......避免它们。我知道 asp.net 喜欢它们,但是……grrrr 是我生命中的祸根【参考方案2】:

Ben Nadel 有一篇关于如何使用 JQuery 执行此操作的精彩博文:http://www.bennadel.com/blog/1364-Ask-Ben-Optimizing-Form-Inputs-For-Numeric-Keypad-Usage.htm

【讨论】:

【参考方案3】:

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


【讨论】:

以上是关于当用户在文本框中按下返回时,我可以取消回发吗?的主要内容,如果未能解决你的问题,请参考以下文章