• ベストアンサー

SHIFT + TABキーの件について

JavaScriptで開発を行っていますが、画面の制御で前項目に戻りたい場合、Escキーを使用して戻ります。 そこで問題なのが、Escキー押下時にevent.keyCodeには何を設定すればいいのかわかりません。どなたか教えて頂けないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • taseki
  • ベストアンサー率66% (155/233)
回答No.4

以下でできました。 Win+IE6でしか検証していません。 また、実用するにはイベントを発生させたエレメントや前項目のチェックなどが必要でしょう。あくまでも参考サンプルとして。 --------------------- <html> <head> <script type="text/javascript"> <!-- function PrevFocus() { if (event.keyCode == 27) { var ElmIndex = event.srcElement.sourceIndex - 1; if (document.all[ElmIndex]) { document.all[ElmIndex].focus(); } } } //--> </script> </head> <body onkeypress="PrevFocus()"> <form> <input type="text" value="text1"> <input type="text" value="text2"> <input type="text" value="text3"> </form> </body> </html>

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • m035
  • ベストアンサー率44% (38/86)
回答No.3

これはもう、 history.back(); を使うしかないのでは? もしくは、前のページのアドレスをどこかに保持しておいて location.href="前ページURL"; として前のページに戻す方法ぐらいしか思いつきません。 どうしてもSHIFT+TABキーを発生させたいんでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • taseki
  • ベストアンサー率66% (155/233)
回答No.2

なるほど、擬似的にShift+Tabを発生させるということですね。 IEに限れば、MSの仕様書を見ると、おっしゃるとおり event.shiftKey は読取専用になってますね。 たとえば sourceIndex を調べて前の項目を focus してはどうでしょう。

全文を見る
すると、全ての回答が全文表示されます。
  • taseki
  • ベストアンサー率66% (155/233)
回答No.1

> Escキー押下時にevent.keyCodeには何を設定すればいいのかわかりません alert(event.keyCode); と書けば判ることなのでは?

inoki_koko
質問者

補足

すみません、説明不足です。Ecsキーのキーコード(27)はわかるのですが、Ecsキー押下時に設定させるSHIFT+TABになるコードがわからないという意味です。 なお、event.shiftKeyに無理矢理trueを設定して、event.keyCodeを9にしたらevent.shiftKeyは設定不可みたいでエラーとなりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Accessでタブ移動順0の場所でSHIFTとTABの同時押しを無効化する方法について

    先頭項目でSHIFT+TABを押下すると、最後の項目に飛びますが、この動作を抑止したいと思います。 押すキーが一つだけなら書き方は分かるのですが、 複数キーを押した場合の書き方が分かりませんでした。 下記では当然ですが、駄目でした。 If KeyCode = vbKeyShift And KeyCode = vbKeyTab Then KeyCode = 0 End If その為、何かアドバイスをいただける方がいらっしゃいましたら、 どうかよろしくお願いします。

  • ASP.Net Enterキーで移動したいイベント

    大変お世話になっております。 Windowsフォームでの動作のようにASP.Net でも Enterキーにて次項目に移動したいと思い、いろいろと調べてみました。 <script language="javascript" type="text/javascript">   function ChgKeyCode() {     if (!(event.srcElement.type == "button" || event.srcElement.type == "submit")) {       if (event.keyCode == 13) {         event.keyCode = 9;       }     }   } </script> 上記スクリプトにて、EnterキーのコードをTabキーに変換してEnterでも次項目に移動できるようにしたのですが、これですと、TextBox にTextChangedイベントがあった場合にイベントが無視されてしまうのですが、どうすればよいでしょうか? Enterキーで次項目に移動しつつ、イベントも適応したいのですが、お知恵を拝借できればと存じます。 何卒よろしくお願いいたします。

  • Altキー+○キーでのショートカットの制御

    お世話になります。 papillon68と申します。 Windows 2000、XP IE6以降限定 ブラウザでAlt+○キーを押すことで様々な操作をキーボードのみで 行うことができます。 (参考:http://www.clubqa.com/weekly/qa020403.htm) 今回行いたいことはこのキーボードのみでの操作の 一部を制限したいというものです。 例えば、 ・Altキー+←キーで一つ履歴が戻ります。[history.back(-1)] ・Altキー+→キーで一つ履歴が進みます。[history.back(1)] これを制限するために ----------------------------------------- // Altキー+←キーの制限 if((event.altKey) && (event.keyCode==37)) { // チェック用 //alert('通った'); event.keyCode = 0; return false; } ----------------------------------------- としていますが、一つ前の画面に戻ってしまいます。 alert()を使って実際にif内を通っているかを チェックしてみると通っていないようです。 同じようにCtrlの場合だと同じ方法で制限することができました。 ----------------------------------------------- // 更新の制限(Ctrl+R) if((event.ctrlKey) && (event.keyCode==82)) { // チェック用 // alert('通った'); event.keyCode = 0; false; } ----------------------------------------------- こちらはアラートが表示され、ページが更新されません。 Altキーの場合もCtrlキーと同じように制限することはできないでしょうか。 お手数をお掛け致しますが、ご教授よろしくお願い致します。

  • HTMLのプルダウンメニューと文字制御

    HTML/javascriptと文字コードについて三点ほど質問させてください。 1. HTMLフォーム上のプルダウンメニュー(<select name="test"><option>…</option></select>)についてですが、プルダウンメニューに文字入力は可能でしょうか? 2. HTMLのテキスト(<input type="text">)などで数字のみ入力可能になるような制御をしてみたいです。 javascriptのonkeydownイベントを用いて function keyControl(){ //16進数文字コードを用いて0~9の数字以外の場合 if( (event.keyCode < 0x30) || (event.keyCode > 0x40) ){  ?文字入力を反映させない? } } 上記の関数を呼び出す事で制御したいのですが「?文字入力を反映させない?」の部分にはどういうコーディングをすればいいでしょうか? 3. DELETEキーを押したときにあるイベントを起こしたいと考えてます。 javascriptのonkeydownイベントを用いて function testDELETE_Enter(){ if( event.keyCode==0x7f ){ alert('DELETEキーを押下しました!'); } } 上記の関数を呼び出すことで制御したいのですが、if文の条件判断がうまくいかなくて、Deleteキーを押した時alert()を実行する事が出来ません。 下記のサイトでDELキーの文字コードは0x7fだと思うのですが、これは私の勘違いでしょうか? http://e-words.jp/p/r-ascii.html 以上三点、解る方いましたらご教授お願いします

  • aspx画面のINPUTボタンにファンクションキーを割り当てたい

    Vb.Netで開発中です。 aspx画面でINPUTボタンを使用しております。 ボタンのプロパティのAccessKeyの割り当てでAlt+「指定したキー」の設定ができるのは知っていたのですが、ファンクションキーを割り当てて欲しいとの要望があり、困っています。 ファンクションキー「F1~F12」を押下したときにあるINPUTボタンのイベントがはしるような実装方法を知りたいです。 よろしくお願いします。

  • Excel VBA Escキー押下をコードで表わすと…

    Excel VBA Escキー押下をコードで表わすと… Excel2003を使用しています。 ある列をダブルクリックすると、指定した範囲のセルを塗りつぶすイベントマクロを作成しました。 ダブルクリックで塗りつぶされた後は、セルが編集状態になっているので、Escキーを押して編集状態を解除していましたが、Escキーを押して編集状態を解除するところまでをコードに書いたらどうかと思い、塗りつぶしを指定しているコードの後に、『SendKeys "{ESC}"』と追加してみたのですが、追加する前と同じ状況で、編集状態のままでした。 Enterや↓キーを押した場合を試しに書いてみると、塗りつぶされた後、1つ下のセルに移動しました。 コードを追加した場所がいけないのか、それとも、使い方が間違っているのか…?? どなたかわかる方がいらっしゃいましたら、教えていただけないでしょうか。 よろしくお願いします。

  • C# DataGridView内での制御について

    初めて投稿します。 C#のwindowsアプリを開発しています。 開発ツールはVS2010を使用しています。 datagridview内の制御について困っているので 知恵を貸してください。 datagridviewのEditModeをEditOnEnterに設定し、常に入力モードにしています。 また、CellValidatingを使用し、各セルの必須チェックなどのエラーチェックを おこなっています。 Enterキー押下でCellValidatingイベントが発生し、エラーチェックを行う ことには問題ないのですが、矢印キーやマウスでのセル移動時にも、 CellValidatingイベントが発生します。 矢印キーやマウスでの操作の場合はCellValidatingイベントを発生させずに したいのですが、どうすればよいのでしょうか? 知っている方がいれば、知恵を貸してください。

  • ファンクションキー制御?

    こんにちわです。 タイトル通りなのですが、 JSでは、 function kdown(e) {var msg =""; var flg = 1; switch(window.event.srcElement.tagName){ case "INPUT" :if(event.srcElement.type != "text" && event.srcElement.type != "password" && event.keyCode!=9 && event.keyCode!=16 && event.keyCode!=32){return false;}else{flg=0;}break; case "TEXTAREA" :flg = 0;break; case "SELECT" :flg = 0;break; case "A" :flg = 2;break; } switch(event.keyCode){ case 8 :msg = "BS";break; case 78 :if(event.ctrlKey){msg = "Ctrl+N";}break; case 82 :if(event.ctrlKey){msg = "Ctrl+R";}break; case 116 :msg = "F5";break; case 122 :msg = "F11";break; } if(event.altKey){msg = "Alt";} if (flg == 0 ){switch(event.keyCode){case 8 :msg = "";break;case 13 :msg = "";break;}} else if (flg == 2 && event.keyCode==13)msg = ""; if(msg != ""){event.keyCode = 0;return false;}else{return true;} } document.onkeydown = kdown; こんな感じに制御するのを、 アクションスクリプトで制御出来ますか? HTMLにこのJS埋め込んでも、FLASHの所クリックして、 各キー押すと意味なくなってしまうので・・ F5やF11など使用されたくないのですが・・・ 入れ替えなどでも良いのですが。。。 宜しくお願いします。

  • 一部Enter無効化の方法を教えてください!

    PHPで作成している画面について、テキストコントロールにフォーカスがある場合に、 Enterキーを押下することで、submitが行われることを無効化させたいと思っています。 <SCRIPT LANGUAGE=javascript> <!-- document.onkeypress = enter; function enter(){ if( window.event.keyCode == 13 ){ return false; } } //--> </SCRIPT> のようなJavaScriptを記述すれば完全にEnterキーを無効にできるようですが、 この状態だと、submitにフォーカスがある状態でEnterキーを押下してもsubmitが実行されません。 この状態を解決する方法をご存知の方、アドバイスをお願いします!! ちなみにブラウザは最低でも、IE6,7とFireFoxには対応したいと思っています。 当方、HTML,PHP,JavaScriptは素人同然ですので、明確な内容で教えて頂けると助かります。 宜しくお願いします!!

  • キーボードで画像を動かす方法

    javaScriptで、 if (event.keyCode == 38) UP(); if (event.keyCode == 39) RIGHT(); if (event.keyCode == 37) LEFT(); if (event.keyCode == 40) DOWN(); のような処理で、上下左右の方向に画像などを移動させています。 しかし、上キーと右キーを同時に押しても 右上には移動しません。 率直にJavaScriptでキーボード入力を行って 右上、右下、左上、左下のように 2つのキーを同時に押したことを判定する方法は ありますでしょうか? ためしに&&を用いて 上キーと右キーが押されたとき用にUP_RIGHT() を作ってコールしたのですが思ったように動かないようでした。 どうかご教授ください。