找了一个是在IE下很好用而在火狐下却不行,导致我在JS里的AJAX也掉不出来了。。
我现在代码是先JS屏蔽默认回车事件 然后指定所有多行文本框例外
 function document.onkeydown() {
        if (event.keyCode == 13 && event.srcElement.tagName.toUpperCase() != "TEXTAREA") {
            event.returnValue = false;
        }
    }
然后在后台代码里写的
  //搜索框默认回车
                txtlink.Attributes["onkeydown"] = " if(event.keyCode===13){ document.getElementById('" + ImgSub.ClientID + "').click();}";
这么写在IE下没事,在火狐下就不行啊,我还加了个JS来判断是火狐还是IE再执行屏蔽所有回车但是FF总能跨过我写的判断浏览器的if执行里边的东西,而我要是写个alert();这个倒是能根据浏览器输出alert的东西。。判断的js如下
function getOs() {
    var OsObject = "";
    if (navigator.userAgent.indexOf("MSIE") > 0) {
        return "MSIE";
    }
    if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) {
        return "Firefox";
    }
    if (isSafari = navigator.userAgent.indexOf("Safari") > 0) {
        return "Safari";
    }
    if (isCamino = navigator.userAgent.indexOf("Camino") > 0) {
        return "Camino";
    }
    if (isMozilla = navigator.userAgent.indexOf("Gecko/") > 0) {
        return "Gecko";
    }}
var isIE = getOs();
if (isIE === 'MSIE') {
    //关闭默认回事事件 所有多行文本框例外
    function document.onkeydown() {
        if (event.keyCode == 13 && event.srcElement.tagName.toUpperCase() != "TEXTAREA") {
            event.returnValue = false;
        }
    }
}
谁有更好的例子么兼容火狐IE的文本框按回车到指定按钮的

解决方案 »

  1.   

    var evt = window.event || arguments.callee.caller.arguments[0]; // 获取event对象
    var currentKey = evt.charCode||evt.keyCode; // 打印对象的value属性
    function document.onkeydown()
    {
       if (Number(currentKey) == 13 && event.srcElement.tagName.toUpperCase() != "TEXTAREA")
       {
           event.returnValue = false;
       }
    }
      

  2.   

    var evt = window.event || arguments.callee.caller.arguments[0]; // 获取event对象
    var currentKey = evt.charCode||evt.keyCode; // 打印对象的value属性
    function document.onkeydown()
    {
      if (Number(currentKey) == 13)
      {
      event.returnValue = false;
      }
    }
      

  3.   

    我写了那个还是报
    missing ( before formal parameters
    [在此错误处中断] function document.onkeydown() { 
    这个额。。
      

  4.   

    FF貌似就不认function document.onkeydown()这个啊。
      

  5.   


      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" Text="TextBox1"  OnClick="Button1_Click" />
             <asp:Button ID="Button2" runat="server" Text="TextBox2"  OnClick="Button2_Click"/>
        <script type="text/javascript" src="JS/jquery-1.4.4.js"></script>
        <script type="text/javascript">
            $(function() {
                $("input[type='text']").keypress(function(evt) {
                    evt = (evt) ? evt : ((window.event) ? window.event : "");
                    var key = evt.keyCode ? evt.keyCode : evt.which;
                    if (key == 13) {
                        var id = new String($(this).attr("id"));
                        var num = id.substr(id.length - 1, 1);
                        $("#Button" + num).click();
                        return false;
                    }
                });
            });
        </script>
      protected void Button1_Click(object sender, EventArgs e)
            {
                Response.Write(this.TextBox1.Text);
            }
            protected void Button2_Click(object sender, EventArgs e)
            {
                Response.Write(this.TextBox2.Text);
            }测试环境 firefox 3.6, ie 8.0 都通过
      

  6.   

    抱歉啊。。jq不太懂。。你这个意思是直接在jq中就指定了那个文本框回车后就指定那个按钮么?
      

  7.   

    http://topic.csdn.net/u/20101129/15/93c6c2ae-d9de-450d-bf6d-68bc9d0bba0d.html
      

  8.   

    试试
    function document.onkeydown(event) {
            if (event.keyCode == 13 && event.srcElement.tagName.toUpperCase() != "TEXTAREA") {
                event.returnValue = false;
            }
        }
      

  9.   

    查了半天这个方法应该这么写document.onkeydown = function(event) {
        var evt = event ? event : (window.event ? window.event : null);
        if (evt.keyCode == 13 && evt.srcElement.tagName.toUpperCase() != "TEXTAREA") {
            evt.returnValue = false;
        }
    }
    但是现在FF不认event这个事件。又惆怅了。。
      

  10.   

    额。。现在是不提示那个错误了。。
    又报了。。uncaught exception: Syntax error, unrecognized expression: #这个了。。哎。。
      

  11.   

     function funname(event)  { // 键盘事件加event
       var evt = event ? event : (window.event ? window.event : null);
       if (event.keyCode == 13) {
                document.getElementById("b1").focus();
            }
    }
    function show(){
    alert("你点击了我");
    }
    </script>
    <input type="text" onKeyPress="funname(event);">
    <input type="button" value="提交" id="b1" onClick="show()">
      

  12.   

    呵呵谢谢回答的这么跟进~~~
    就是多个文本框按回车到指定按钮事件
    现在js改成document.onkeydown = function(event) {
       
        if (event.keyCode == 13 && event.srcElement.tagName.toUpperCase() != "TEXTAREA") {
            event.returnValue = false;
        }
    }最起码能让写的AJAX生效了。。原来的时候报错了连AJAX输出的东西都出不来。。
    CS里的代码是 txtpwd.Attributes["onkeydown"] = "if(event.keyCode===13){Logintxt();}";结果。。现在还是没达到那种效果。在文本框按回车的时候确实执行了他该执行的方法了。但是还是触发了我一个服务器控件按钮的事件。。