2016-08-24 5 views
0

私のサイトでは以下のスクリプトを使用しています。サイト上にフォームがあり、そのフォーム内でユーザーが「入力」を押すと、別のボックスにフォーカスを設定する必要があります。.onkeypressはクロムとサファリでは機能しません

スクリプトはIEとFFで完全に動作しますが、サファリやクロムでは機能しません。私はもともと2つのブラウザがenterキーのIDが違うが、 "alert(evt.keyCode);" .onkeypressが2つのブラウザで動作しないように見えることを意味するアラートを生成しません。これをどうやって解決するのですか?

var WebPartElementID ="ctl00_ctl34_g_db6615a7_4c3b_4a14_9bbc_43ce9d63c24d_FormControl0"; 
var WebPartData = document.getElementById(WebPartElementID);  
WebPartData.onkeypress = stopRKey;  

function stopRKey(evt) { 
      var evt = (evt) ? evt : ((event) ? event : null); 
      var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 
      alert(evt.keyCode); 
      if ((evt.keyCode == 13)) { document.getElementById("ctl00_ctl34_g_db6615a7_4c3b_4a14_9bbc_43ce9d63c24d_FormControl0_V1_I1_R1_I1_T4").focus(); return false; } 
} 

答えて

0

https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onkeypress

注:ユーザーがキーボード上のキーを押したときに KeyPressイベントが発生しなければなりません。ただし、すべてのブラウザが キーのキー押しイベントを発生させるわけではありません。

keyupまたは​​を代わりに使用してください。違いの

さらに詳しい情報:http://www.quirksmode.org/dom/events/keys.html

一部のブラウザでは、文字を挿入するようenterキーが表示されていないようです。

+0

ありがとうございます、キーアップが機能しませんでした。 keydownは動作します。しかし、ffではパーミッションエラーが発生しますか? broswerが実行しているものをキャッチし、それに応じて適切な関数を使用する方法はありますか? –

+0

jsfiddleまたはcodepenを作成できますか?このようにして、テストしているコードとまったく同じコードを試してみることができます。 – seahorsepip

+1

ありがとう、私はそれを考え出した。それはfirefox上のkeyupのようにもユーザーがアクセス権を持っていない編集ページをトリガするようです。マスターページでこれを止めるためのイベントを追加しました。 –

関連する問題