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

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


【讨论】:

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

从html输入文本框中按回车键时如何防止回发?

用户在文本框中按下回车的 JQuery 事件?

在 ASPX 中回发后按键不起作用

在 Javascript 中按下输入之前检测 IME 输入

VB6在富文本框中按下向上/向下箭头时禁用系统哔声?

vba inputBox:如何用空文本框区分“取消”和“确定”之间的区别