代码之家  ›  专栏  ›  技术社区  ›  SilverLight

FireFox和javascript问题(event.keyCode或event.charCode或event.which不起作用)

  •  0
  • SilverLight  · 技术社区  · 14 年前

    我不知道我的火狐是怎么回事!

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title></title>
        <script type="text/javascript">
            function a() {
                alert('a');
                //alert(event.which);
                //alert(event.keyCode);
                //alert(event.charCode);
            }
            function b() {
                alert('b');
                //alert(event.which);
                //alert(event.keyCode);
                //alert(event.charCode);
            }
            function c() {
                alert('c');
                //alert(event.which);
                //alert(event.keyCode);
                //alert(event.charCode);
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="TextBox1" runat="server" onkeyup="a()"></asp:TextBox>
            <asp:TextBox ID="TextBox2" runat="server" onkeydown="b()"></asp:TextBox>
            <asp:TextBox ID="TextBox3" runat="server" onkeypress="c()"></asp:TextBox>
        </div>
        </form>
    </body>
    </html>
    

    当我在文本框1,2,3中输入一些东西时,我只看到第一个警报(意思是a,b,c)。

    提前谢谢。。。

    2 回复  |  直到 14 年前
        1
  •  4
  •   Felix Kling    14 年前

    它在IE中起作用,因为那里, event 是全局变量。

    在Firefox中,事件对象被传递给事件处理程序,因此必须使函数接受一个参数:

    function a(event) {
        event = event || window.event // IE does not pass event to the function
        alert('a');
        alert(event.which);
        alert(event.keyCode);
        alert(event.charCode);
    }
    

    <asp:TextBox ID="TextBox1" runat="server" onkeyup="a(event)"></asp:TextBox>
    

    顺便说一句,你可以很容易地发现这个使用萤火虫。它在控制台中抛出一个错误。

        2
  •  0
  •   Marvin Pinto    13 年前

    我也有一个问题,试图得到像这样的工作,为FireFox和IE。什么工作对我来说是使用关键字 event 作为对某个javascript函数的函数调用的输入参数。

    我想要的是开一家新的公司 .js

    //This function filters out character inputs from client-side
    //that do not include a-z, A-Z, 0-9 and '-' (dash) and backspace
    function charFilter(event) {
    
      event = event || window.event || event.which || event;
      //alert(event);
      var unicode;
      if (event.charCode) unicode = event.charCode;
      else if (event.which) unicode = event.which;
      else if (event.keyCode) unicode = event.keyCode;
      else if (event) unicode = event;
    
    
      // unicode must be:      0-9       OR                A-Z             
      OR                a-z              OR        -      OR        BS    OR        CR    
      if ((unicode > 47 && unicode < 58) || (unicode > 64 && unicode < 91) || (unicode > 96 && unicode < 123) || unicode == 45 || unicode == 8 || unicode == 13) {
        return true;
      }
      else return false;
    }
    

    运行窗体的代码 Default.aspx ( Default.aspx.vb )现在包含以下子项:

        Protected Sub Page_load(ByvVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'some code
    
        'Filter characters in text search field (client side)
        Dim t As Type = Me.GetType()
        Me.Page.ClientScript.RegisterClientScriptInclude("t", ResolveUrl("~/JScript.js"))
        txtSearch.Attributes.Add("OnKeyPress", "return charFilter(event)")
    
        'rest of code
    
        End Sub
    

    js先生 文件将为您不同,我只是去了一个默认位置为这个。