- ベストアンサー
フォーム内のテキストフィールドにアドレスを入力後、Enterキーを入力して移動する方法
- フォーム内のテキストフィールドにアドレスを入力し、Enterキーを押すと、指定したアドレスに移動する方法について教えてください。
- 以下のコードを使用して、フォーム内のテキストフィールドに入力したアドレスに移動する方法を試しましたが、うまくいきませんでした。
- 解決策をご存知の方は、教えていただけると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こんな流れで良いじゃないかな?(動作未確認) window.onload = function(){ document.getElementById('t').onkeydown = function (ev){ var ev = (!ev) ? event:ev;//Firefox1.5ではevにイベントが入る var key = ev.keyCode;//取り合えずkeyCodeを取る。 alert(key)//Enterキーを押して確認してください。 var mf = (ev.modifiers) ? ev.modifiers : ((ev.altKey) ? 1 : 0) + ((ev.ctrlKey) ? 2 : 0) + ((ev.shiftKey) ? 4 : 0);//NNがmodifiersでIE,FirefoxがctrlKey、shiftKey、altKeyだったかな? alert(mf)//Enterキーを押して確認してください。 var k = key + '_' + mf;//ここでkeyCode_modifiersと言う形を作る。 alert(k)//Enterキーを押して確認してください。 if(k == '13_0'){//Enterキーで装飾キーが押されていない。 url = document.f.t.value; location.href = url; } } }
その他の回答 (2)
<script type="text/javascript"> window.onload = function(){ document.getElementById('t').onkeydown = function (ev){ var ev = (!ev) ? event:ev;//Firefox1.5ではevにイベントが入る var key = ev.keyCode;//取り合えずkeyCodeを取る。 alert(key)//Enterキーを押して確認してください。 var mf = (ev.modifiers) ? ev.modifiers : ((ev.altKey) ? 1 : 0) + ((ev.ctrlKey) ? 2 : 0) + ((ev.shiftKey) ? 4 : 0);//NNがmodifiersでIE,FirefoxがctrlKey、shiftKey、altKeyだったかな? alert(mf)//Enterキーを押して確認してください。 var k = key + '_' + mf;//ここでkeyCode_modifiersと言う形を作る。 alert(k)//Enterキーを押して確認してください。 if(k == '13_0'){//Enterキーで装飾キーが押されていない。 url = document.f.t.value; url = (url == '') ? './':url location.href = url; return false; } } } </script>
お礼
上記の通りにやってみたところ問題を解決することができました。 ご回答いただきどうもありがとうございました。
それで上手く行かないならonkeydownを使ったら如何でしょうか。 OSで違いがあるかもしれませんがEnterキーは event.keyCode==13 event.altKey=flase event.ctrlKey=false event.shiftKey=false または event.keyCode=13 event.modifiers==0 こんな感じだったとおもいました。 その後条件を満たしたら url = document.f.t.value; location.href = url; で上手く行かないかな?
補足
以下のように作ってみたのですがうまくいきませんでした。 具体体にはどのようにすればよいのでしょうか? (ちなみに使用しているOSはWindows XP、ブラウザはIE6です) <html> <head> <script type="text/javascript"> function jumpURL() { if( event.keyCode=13 && event.modifiers==0 ) { url = document.f.t.value; location.href = url; } } </script> </head> <body> <form name="f"> <input type="text" name="t" id="t" onKeyDown="jumpURL()"> </form> </body> </html>
補足
上記の通りにやってみたところFirefox2では動作したのですが IE6では動作しませんでした。(alertは表示されるがページ移動をしない)