在mozilla firefox上按enter键时触发按钮事件

时间:2009-01-07 06:43:36

标签: javascript-events

function CaptureKeys (e,btn) {
  var c //= document.layers ? evt.which: document.all ? event.keyCode : evt.keyCode 
  if(window.event) { 
    c = e.keyCode; // IE
  } else if(e.which) {
    c = e.which; // Netscape/Firefox/Opera
  }
      if (c == 13) {
        //return /enter key
        if (btn=="go") {
            if (document.getElementById("ctl00_ContentPlaceHolder1_btnGo")!=null) {
                document.getElementById("ctl00_ContentPlaceHolder1_btnGo").focus();
                return true;
            }
        } else {
            if (document.getElementById('ctl00_ContentPlaceHolder1_ImgFilter') != null) {
            //__doPostBack('ctl00_ContentPlaceHolder1_ImgFilter','');
            document.getElementById('ctl00_ContentPlaceHolder1_ImgFilter').focus();
            return true;
           }
       }
      return false;
     }
 }

此代码正在使用IE7但不适用于Mozilla Firefox。按 Enter 键时,请帮我按钮事件。

6 个答案:

答案 0 :(得分:1)

Firefox假设如果您在任何文本字段中按Enter键,则需要提交表单 - 即使字段不是表单的一部分,即使按钮不是"提交"

您必须使用preventDefault()覆盖Firefox默认行为。在你的jQuery选择器中,放入包含你想要忽略输入键的文本框的div - 在你的情况下,"页面" DIV。您也可以指定要特别忽略的文本框,而不是选择整个div。

$('#page').keypress(function(e) {
    if(e.which == 13) { // Checks for the enter key
        e.preventDefault(); // Stops IE from triggering the button to be clicked
    }
});

答案 1 :(得分:0)

您只需将 UseSubmitBehavior =“true”属性值添加到应该在 Enter 键上触发的按钮。

答案 2 :(得分:0)

您也可以尝试以下代码:

theButton.click();

答案 3 :(得分:0)

我不知道是否有人正在检查这个帖子,但是为了将来参考。

我在FF遇到了同样的问题,我在这里得到了答案:

http://www.webdeveloper.com/forum/showthread.php?t=108382

祝你好运!

答案 4 :(得分:0)

使用:

 __doPostBack('ctl00$ContentPlaceHolder1$btnGo',''); 

而不是:

document.getElementById("ctl00_ContentPlaceHolder1_btnGo").focus(); 

答案 5 :(得分:0)

你有一个错字。

window.event应为window.Event