- ベストアンサー
フォームの中の特定のオブジェクトの順番を得るには?
イベント処理で呼ばれたフォームの中のフォームオブジェクトが そのフォームの中で、何番目のオブジェクトかを知るにはどうすればよいのでしょう? tabIndexは使用しません。 ノードをさかのぼって順番を数えるしか方法しか思いつかないのですが・・・
- みんなの回答 (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>
お礼
ありがとうございます ノードを調べるより簡素ですが、なんだかスマートじゃないんですね。 (悪意はありませんよ。) テーブルのセルの位置みたいに cellIndex みたいなのがあればなぁ~と思いまして・・・
補足
<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でもエンターキーで移動できそうです! ちと問題ありそうだけど