【问题标题】: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 ... /> 替换它。)

【问题讨论】:

    标签: asp.net jquery


    【解决方案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();
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多