• 締切済み

エンターキーで表の中のフォームを順番にカーソル移動

質問させて頂きます。 表の中に複数のフォームを設置した状態の場合で、入力フォームにて 文字を入力した後にエンターキーを押すと次のフォームにカーソルが移動し、 次のフォームでも同様に文字を入力した後にエンターキーを押すと 次のフォームに移動・・・と言った具合で、エンターキーを押す度に 6ヶ所の入力フォームへ上側のフォームから下側のフォームへ順番に移動し、 最後(6つ目)の入力フォーム上にカーソルが来ている時にエンターキーを押すと ボタン(合計或いはSubmit等)が押されるJavaScriptを組もうとしているのですが、 方法が分からず途方に暮れています。 組もうとしている入力フォームですが、こちらに書こうとしたところ文字数オーバーに なってしまいましたので、以下URL先にてTXTファイルをアップしておきました。 http://dragonhorse-railway.com/GooQuestion/JStest.txt どうかご教授頂けると幸いです。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

なぜformを分けているのでしょうか? 同じformでやったほうが効率的な気がします。 またformにnameをつけるのは最近ははやっていませんのでどうかと・・・ また質問の際はもう少し簡素な例にしたほうが核心を理解しやすいでしょう とりあえずformをわけたままでサンプルを書いておきます。 だいぶ手を抜いたのですべての場合に当てはまるわけではないですが ある程度汎用性を考えてかいてあります。参考までに <script> try{ document.addEventListener ('keypress',function(e){keypressfunc(e)},true); }catch(e){ document.attachEvent('onkeypress',function(e){keypressfunc(e)}); } function searchNextInput(obj){ var n=document.getElementsByTagName("INPUT"); for(var i=0;i<n.length;i++){ if(obj==n[i]){ return i<n.length-1?n[i+1]:false; } } } function keypressfunc(e){ var t = (e.srcElement || e.target); if(t.nodeName=="INPUT" && t.type=="text" && e.keyCode==13){ var n=searchNextInput(t); if(n) n.focus(); if(e.preventDefault) e.preventDefault(); else e.returnValue = false; } } </script> <FORM><input name="L_LCL" size="8" type="text"></FORM> <FORM><input name="N_LCL" size="8" type="text"></FORM> <FORM><input name="H_HIGH" size="8" type="text"></FORM> <FORM><input name="H_LOW" size="8" type="text"></FORM> <FORM><input name="L_SLOPE" size="8" type="text"></FORM> <FORM><input name="N_SLOPE" size="8" type="text"></FORM> <FORM><input name="LE_LCL" size="8" type="text"></FORM> <FORM><input name="LE_SLOPE" size="8" type="text"></FORM> <FORM><input name="LE_TOTAL" size="8" type="text"></FORM> <FORM><input name="PM_SLOPE" size="8" type="text"></FORM> <input type="button" value="[計算]"> <input type="button" value="リセット">