• ベストアンサー

フォームの中の特定のオブジェクトの順番を得るには?

イベント処理で呼ばれたフォームの中のフォームオブジェクトが そのフォームの中で、何番目のオブジェクトかを知るにはどうすればよいのでしょう? tabIndexは使用しません。 ノードをさかのぼって順番を数えるしか方法しか思いつかないのですが・・・

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

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

formをforでまわして合致した値をかえすようにしたら? 若干例はことなりますが、こんな感じでわかります? <script> function test(obj){ var f=obj.form; for(var i=0;i<f.length;i++){ if(f[i]==obj){alert(i);break;} } } </script> <form> <input type="text" onclick="test(this)"> <input type="text" onclick="test(this)"> <input type="text" onclick="test(this)"> <input type="checkbox" onclick="test(this)"> <input type="radio" name="r" onclick="test(this)"> <input type="radio" name="r" onclick="test(this)"> <input type="radio" name="r" onclick="test(this)"> <select onclick="test(this)"> <option>test</option> <option>test</option> <option>test</option> </select> </form>

noname#84373
質問者

お礼

ありがとうございます ノードを調べるより簡素ですが、なんだかスマートじゃないんですね。 (悪意はありませんよ。) テーブルのセルの位置みたいに cellIndex みたいなのがあればなぁ~と思いまして・・・

noname#84373
質問者

補足

<html><body><form> <input type="text" onkeydown="nextTab(this,event.keyCode);"> <input type="checkbox" onkeydown="nextTab(this,event.keyCode);"> <input type="text" onkeydown="nextTab(this,event.keyCode);"> <input type="text" onkeydown="nextTab(this,event.keyCode);"> <input type="radio" name="r" onkeydown="nextTab(this,event.keyCode);"> <input type="radio" name="r" onkeydown="nextTab(this,event.keyCode);"> </form> <script> function nextTab(e,s){ if(s==13) for(var f=e.form,i=0,m=f.length;i<m;i++) if(f[i]==e) f[(i+1)*(i+1<m)].focus(); } </script> </body></html> なんだかFirefoxでもエンターキーで移動できそうです! ちと問題ありそうだけど