【问题标题】:how to stop a button from being fired when press enter按下回车键时如何阻止按钮被触发
【发布时间】:2010-11-21 08:28:25
【问题描述】:

我正在使用此函数来处理搜索文本框上的输入点击,但它会触发页面中的另一个按钮,如何阻止该按钮被触发并调用我的 search() 函数。

InputKeyPress(e) {
    if (window.event) {
        if (event.keyCode == 13) {
            search();
        }
    } else {
        if (e) {
           if (e.which == 13) {
               search();
           }
        }
    }
 }

【问题讨论】:

    标签: javascript button click keycode


    【解决方案1】:

    keyCode == 13的情况下,需要防止keypress事件的默认动作。执行此操作的标准方法是在事件对象上调用 preventDefault 函数(如果有的话;它在早期版本的 IE 上没有)。较旧的方法是从您的事件处理函数返回false。两者兼而有之的“腰带和大括号”方法没有真正的危害。 :-)

    你也可以稍微缩短你的函数:

    function InputKeyPress(e) {
        var keyCode;
    
        e = e || window.event;
        keyCode = e.keyCode || e.which;
        if (keyCode == 13) {
            search();
            if (e.preventDefault) {
                e.preventDefault();
            }
            return false;
        }
    }
    

    【讨论】:

      【解决方案2】:

      你需要像这样添加“return false”:

      function InputKeyPress(e) {
          if (!e)
              e = window.event;
          var keyCode = e.keyCode || e.which;
          if (keyCode == 13) {
              search();
              return false;
          }
      
          return true;
      }
      

      并将文本框中的调用更改为:

      <input .... onkeypress="return InputKeyPress(event);" ...>
      

      意思不仅仅是调用函数,而是“返回”它。

      【讨论】:

      • 谢谢亲爱的你真的帮了大忙 :) 我们正在发布,那个错误让我发疯了
      • @Miroo 没问题,请将(完全相同的)答案之一标记为正确。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      相关资源
      最近更新 更多