2012-02-14 9 views
3

the one asked hereと同じ静脈に沿って、入力キーがChromeでどのように処理されるかに関する質問があります。onKeypress ChromeでテキストフィールドのKeyイベントが機能しない

私が達成しようとしている効果は、現在のフィールド内でフォーカスがある間に、Enterキーが1つのボタンのクリックイベントを呼び出すことができるようにすることです。 aspxの

<form id="form1" runat="server"> 
    <div> 
    <asp:LinkButton ID="newBtn" runat="server" OnClick="btnLogin_Click" Text="ASP Link" /> 
    <asp:TextBox ID="txtContainer" runat="server" Width="100" /> 
    <asp:Label ID="time_lbl" runat="server" /> 
    </div> 
    </form> 

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       txtContainer.Attributes.Add("onKeyPress", "doClick('" + newBtn.ClientID + "',event)"); 
      } 

     }  

     public void btnLogin_Click(object sender, EventArgs e) 
     { 
      time_lbl.Text = txtContainer.Text; 
     } 

aspx.cs の背後にあるコード内の内

<script type="text/javascript"> 
//attempting to capture keypress for chrome here but this is not working 
     $("#txtContainer").keypress(function (e) { 
      if (e.keyCode == '13') { 
       e.preventDefault(); 
       doClick(buttonname, e); 
       return false; 
      } 
     }); 

     function doClick(buttonName, e) { 

      var key; 
      if (window.event) 
       key = window.event.keyCode;  //IE 
      else 
       key = e.which;  //firefox 

      if (key == 13) { 
       var btn = document.getElementById(buttonName); 
       if (btn != null) { 
        btn.click(); 
        event.keyCode = 0 
       } 
      } 
     } 
</script> 

のjavascript:これを実現するために、私は次のコードを使用しています上記のコードはFFとIEでは正常に動作しますが、クロムはフォーム全体Enterキーでキー入力をキャプチャします。

ありがとうございます。

+4

は代わりにe.keyCode' '13'のe.which ==='使用してみてください。 'keypress()'イベントで私はそのような問題を抱えており、 'e.which'はそれを解決するようです。さもなければ 'keyup()'や 'keydown()'を使ってください。 – elclanrs

+0

いずれかがあなたを助けましたか?私は同じ問題に遭遇しています。これらは私の問題を解決しませんでした。 – TheLifeOfSteve

+0

@Steveいいえ私は以来、この問題に対する他の多くの言及を見つけましたが、解決策はありませんでした。これは、クロムが入力キーを管理する方法とフォームの提出方法にリンクしているようです。私がそれを解決するなら、私は答えをここに掲示するでしょう。 – rlcrews

答えて

1

私の代わりに「キー入力」の「からkeyup」を使用すると、あなたの問題

0

を解決する必要があることをあなたがあなたのキー入力イベント

$("#txtContainer").keypress(function (e) { 
     e.preventDefault(); 
     var key = window.event ? e.keyCode : e.which; 
     if (key == '13') { 
      doClick(buttonname, e); 
     } 
    }); 

ノートでこれを試すことだと思います。varキー= window.event? e.keyCode:e.which; e.preventDefault()を最初に配置し、falseを返す必要があります。 e.preventDefault()を使用しているため、必須ではありません。

-1

これも仕事をする必要があります。

var key = e.keyCode || e.which; 
if(key === 13 { /* your code */ } 
関連する問題