• ベストアンサー

キーコード ?と/が同じですが、区別する方法は

onkeydownで取得するキーコードが、?と/が同じ191で困っています。 ?が入力されたときに処理を実行し、/が入力された時は処理を実行したく無いのですが、どうすれば良いでしょうか? function hoge() { if(event.keyCode == 191) 処理; } <INPUT type=text id=txt1 name=txt1 onkeydown=hoge() > 宜しくお願い致します。

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

  • ベストアンサー
回答No.1

if( (event.keyCode==191) && (event.shiftKey) )

cafe0316
質問者

お礼

出来ました! ありがとうございます。

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

関連するQ&A

  • キーコードなどでAlt+○を認識してイベントを発生させるには?

    キーコードなどでAlt+○を認識してイベントを発生させるにはどうしたらよいのでしょうか?ひとつのキーでならできたのですが複数のキーを組み合わせることができませんでした。参考までにうまくいかなかったプログラムの関数部分を記述しておきます。このプログラムだと一回目はうまくいくのですが二回目になるとsキーを押すだけで実行されてしまいます。 document.onkeydown=keyDown; function keyDown() { keynum1=event.keyCode; if(keynum1==18)//この番号がキーに対応してる(Altキー) { document.onkeydown=pressEnter; } } function pressEnter() { keynum2=event.keyCode; if(keynum2==83)//この番号がキーに対応してる(sキー) { document.write("キーコード"); } }

  • Altを使ったショートカットキー無効の方法

    いつもお世話になってます。 javascriptで、IEのショートカットキーのいくつかを無効にしているのですが、 Altと組み合わせて使うショートカットキーの無効化ができずに困ってます。 例えば、Ctrl+Iでお気に入りを開く処理の無効化はこう実現できました。 function keydown() { if(event.ctrlKey & event.keyCode == 73){ event.keyCode = 0; return false; } } document.onkeydown = keydown; ですが、Alt+Dでアドレスバー選択の無効化は以下では実現できませんでした。 function keydown() { if(event.altKey & event.keyCode == 68){ event.keyCode = 0; return false; } } document.onkeydown = keydown; どうすれば実現できるのか、教えてください。

  • 一部のテキストだけのKEYCODEを有効にしたい

    四苦八苦している初心者です。よろしくお願いします。 バックスペースキーを以下のように無効にしています。 window.document.onkeydown = function () {if (event.keyCode == 8) {event.keyCode = null; return false;}} フォームに有効にしたいテキストが存在するのですが、どのようにしたら有効になりますでしょうか? <input type="text" name="set" size="60" value="ABC"> 全体にバックスペースを無効にし、一部だけ解除したいという内容です。よろしくお願いします。

  • インラインフレームのキーイベント

    IE7のインラインフレームでキーイベントを取得しようとしているのですが、オブジェクトがありませんとエラーになってしまいます。 こちら通常の場合は上手くいくのですが、 <html> <head> <meta http-equiv="content-type" content="text/html; charset=shift_jis"> <title>HTML Editor</title> <script type="text/javascript"> document.onkeydown = function(e) { var shift, ctrl; keycode = event.keyCode; ctrl = event.ctrlKey; shift = event.shiftKey; // キーコードの文字を取得 keychar = String.fromCharCode(keycode).toUpperCase(); // Ctrl同時押しの場合 if (ctrl) { if (keychar == "C") { alert('Ctrl+C'); } } } </script> </head> <body id="oBody"> <span id="editSpan"> <iframe id="oIframe" style="width:100%;height:50%"> </iframe> </span> </body> </html> 次のようにインラインフレームの中で行おうとするとエラーになってしまいます。 <html> <head> <meta http-equiv="content-type" content="text/html; charset=shift_jis"> <title>HTML Editor</title> </head> <body id="oBody"> <span id="editSpan"> <iframe id="oIframe" style="width:100%;height:50%"> </iframe> </span> <script type="text/javascript"> oIframe.document.onkeydown = function(e) { var shift, ctrl; keycode = event.keyCode; ctrl = event.ctrlKey; shift = event.shiftKey; // キーコードの文字を取得 keychar = String.fromCharCode(keycode).toUpperCase(); // Ctrl同時押しの場合 if (ctrl) { if (keychar == "C") { alert('Ctrl+C'); } } } </script> </body> </html> なにか解決方法ありますでしょうか。 よろしくお願いします。

  • javascript クロームさんをなんとかしたい

    javascriptでchromeだけ挙動が違うので動作を分離しようと考えています。 問題点はsubmit()の後、処理を抜けてしまう点です。 下記'問題の箇所'の行が実行されません(1行前のsubmit()の時点で関数を終了する) 何か対応策はないでしょうか? ※エッジ、IE、Foxは期待通りの動作です -----jsファイルの内容---- function Key_on(keyCode){ if(keyCode == 13){ var userAgent = window.navigator.userAgent.toLowerCase(); if (userAgent.indexOf('chrome') != -1) { document.forms[txt_submit].submit(); document.getElementById('ctxt').value= '';←問題の箇所 }else{ document.txt_submit.submit(); document.getElementById('ctxt').value= ''; } } } function send(){ document.txt_submit.submit(); document.getElementById('ctxt').value= ''; } -----htmlの内容---- <form id="txt_submit" name="txt_submit" action="log.cgi" method="post" target="log" autocomplete="off"> <input type="text" id="ctxt" name="ctxt" size="20" value="" onkeydown="Key_on(event.keyCode)"> <input type="button" value="送信" onclick="return send();"> </form>

  • テキストフィールドに半角数値以外入力させない方法…。

    お世話になります! JavaScriptで、 function checkNum() {  c = String.fromCharCode(event.keyCode);  if ("0123456789".indexOf(c,0) < 0) alert("数値以外入力できません"); } と記述し、実行してみたのですが確かに数値以外は入力できないのですが BackSpaceやEnterキー、Tabキーを押した時にもアラートが発生します…。 本を見て、 function checkNum() {  c = String.fromCharCode(event.keyCode);  if ("0123456789".indexOf(c,0) < 0) return false; return true; } と記述すると、フォーム自体に半角数字しか入力できなくなると書いてあったのですが 実行しても普通に全角入力できました…。(泣) 何か方法ありますか?ご存知の方、宜しくご教授願います★ ちなみに、勿論<input>部分にonKeyDown="***()"の記述はしてますし JavaScriptが有効な状態での実行です。

  • 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 以上三点、解る方いましたらご教授お願いします

  • テキストボックスをEnterキーで移動する際のビープ音

    あるテキストボックスでEnterキーを押すと、次のテキストボックスに移動する スクリプトを組んだのですが、動作はしますが必ず「ブー」というビープ音が 鳴ってしまいます。 たぶん、改行できないテキストボックス内でEnterキーを押すことで、「ダメだよー」 っという警告だと思うのですが、どうにかして消すことはできないのでしょうか? どのような些細なことでも構いませんので、ご教授願います! ~Java Script~ function Change(){ if(event.keyCode==13) document.form.name2.focus(); } ~HTML~ <FORM NAME="form"> <INPUT TYPE="text" NAME="name1" onKeyDown="Change()"> <INPUT TYPE="text" NAME="name2"> </FORM>

  • テキストフィールドの入力規則(数値チェック)

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=143226 を参考にさせていただいて、以下のコードで実行してみました。 =============================== <BODY> <FORM NAME="f" ACTION="UPDATE" METHOD="POST" TARGET="FRAME_D" onSubmit="return conf();"> <INPUT TYPE="TEXT" NAME="FM_KINGAKU" onKeyDown="return keyCheck(event.keyCode);" > <SCRIPT TYPE="text/javascript" SRC="./JS.SOURCE"></SCRIPT> <SCRIPT TYPE="text/javascript"> <!-- function keyCheck(keyCodes){ if((keyCodes >= 49 && keyCodes <= 57) || (keyCodes >= 96 && keyCodes <= 105) || keyCodes == 46 || keyCodes == 8) return true; else return false; } function conf(WK_LINEINDEX){ /* 省略 */ } // --> </SCRIPT> </FORM> </BODY> =============================== しかし、数値以外のキーを押しても何事もなかったかのように 入力できてしまうのです。 前の質問者のlovelypoohさんは解決されたみたいなんですが、 いったい何が違うのでしょう? onSubmit="return conf();" ってのと onKeyDown="return keyCheck(event.keyCode);" ってのが 同じFORMタグの中にある、とか関係あるのでしょうか?

  • フォームのname値を配列にしてJavaScriptでフォームのチェックをする方法

    JavaScriptでフォームの半角数字のチェックをしたいのですが、 form内容をCGI(PHP)に渡すためname値を配列にしないといけないのですが、 以下のスクリプトだとエラーが出てしまいます。 *実際はif(isNaN~)と<input~>をループで書き出しており、行数が不特定なので それぞれ別のname値を使うことができない状態です。 <script language="JavaScript"> function check() { if(isNaN(document.form1.hoge[0].value)){ alert("値は半角数字で入力してください。"); return(false); } if(isNaN(document.form1.hoge[1].value)){ alert("値は半角数字で入力してください。"); return(false); } return(true); } </script> <form method="post" action="xxx.cgi" onSubmit="return check()" name="form1"> <input type="text" name="hoge[0]"> <input type="text" name="hoge[1]"> </form> 特にCGIに渡す必要がなければ <input type="text" name="hoge"> <input type="text" name="hoge"> としてやればチェックができるのですが、どうしても次の 処理があるためname値を配列にする必要があります。 解決方法がわかる方がおられましたらご教授ください。 以上よろしくお願いいたします。