• ベストアンサー

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

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

noname#84373
noname#84373

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

  • ベストアンサー
  • 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でもエンターキーで移動できそうです! ちと問題ありそうだけど

関連するQ&A

  • フォーム上にある、オブジェクトの初期化

    行いたい処理は次のような処理です。 1.フォームに”クリア”ボタンを配置 2.1が押された時、フォーム上のテキストボックス、コンボボックス、チェ ックボックスが初期化される そこで、質問です。フォーム上にあるオブジェクトは60近くあるので1つ1つのオブジェクトに =Null、=""で初期化するのは大変なので、一括で初期化する方法を探しています。 どなかた、知っている方がいらっしゃったら、教えていただきたいと思います。お願いいたします。

  • VB2008で親フォームから子フォームを開いたときの処理で

    VB2008で親フォームから子フォームを開いたときの処理で 質問させて頂きます。 親フォームから子フォームを開いて、 子フォーム画面ロード時に、TreeViewにノードを追加する処理を行おうとするのですが、 ノードの追加ができません。 親フォームから子フォームの呼び出しの部分 Using frmAct As New form2 frmAct.ShowDialog() end using 子フォームLoad処理 Private Sub F_Actresult_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call MP_hogeload() ←別のモジュールからサブルーチンを呼び出してノード処理を追加させる。 End Sub 外部サブルーチン Public Sub MP_hogeload() With form2 .trehoge.Nodes.Add("hoge") end with end sub 同じ子フォーム内に記述している場合は問題なく追加できています。 この開き方の場合、別のモジュールでノードを追加させる方法を探しています。 よろしくお願いいたします。

  • 【vb.NET】フォームを閉じる際に他のフォームを制御したい

    Visual Basic 2005で学習中です。 フォーム1とフォーム2があり、 1.フォーム1からボタン1を押してフォーム2を開く。 2.フォーム1のボタン1を押下不可にする。 3.フォーム2を閉じるとフォーム1のボタン1を押せるようにする。 という処理をさせたいのですが、3.の処理がどうしてもできません。 formClosingイベントの中で、ボタン1を押せるようにする処理を書いているのですが、うまくいきません。 良い方法を教えていただきたく思います。お願いします。

  • フォームが表示されてから実行されるイベントの順番は

    アクセスのフォームが表示されてから実行されるイベントの順番は? リードとかopenとかがどの順番で発動されてるのかわからないので教えてください。

  • ExcelVBA:フォーム2のイメージオブジェクト(画像付)をフォーム1のイメージオブジェクト(画像なし)に表示する方法

    ExcelVBAで、他のフォームのイメージオブジェクトを表示させる方法が分かりません。LoadPicture()を使ってみたのですが、ファイル名を入力しないとダメなのでできませんでした。 例えば、フォーム2の中に画像の付いたイメージオブジェクト「イメージ2」があったとします。 それを、フォーム1の、画像のないイメージオブジェクト「イメージ1」に表示させるにはどうすればよいのでしょうか? 回答よろしくお願いします。

  • フォルダの中の順番

    フォルダの中に順番にNOをつけて保存したファイルがあります。 "001.jpg"という具合に順番に30番程保存したのですが20番当たりから順番が揃わなくなっています、20番の次は25番次は29番と言う具合でそれまでは順番よく続けて揃って並んでいたのですが、何故なんでしょうか、ちなみに時計等は正常なんですが、どこかバグがあるのでしょうか、ファーストエイドもしましたが異常はなさそうです。

    • ベストアンサー
    • Mac
  • EXCEL2007-VBAフォーム上のイメージオブジェクトに図形が設定

    EXCEL2007-VBAフォーム上のイメージオブジェクトに図形が設定されているかをチェックするには いつも親切な回答ありがとうございます。 VBAフォーム上のイメージに図形が設定されているかをチェックする方法を教えていただけないでしょうか イメージオブジェクトが5件あり、Shape図形が1,3,5番目に存在した場合 先頭のイメージオブジェクトから詰めて表示したいのですが、方法が分かりません。 どうぞ宜しくお願いします。

  • Accessフォームを開くときに決まった順番で表示

    Access2000を使用しております。 並べ替えを設定したクエリを基にしたフォームがあります。(このクエリのみを実行すると思った通りの順番でデータが並びます。) しかし、フォーム上では一度別の項目でツールバーを使用して並び替えを行うと、次にフォームを開いたときに思った通りの順番ではなく、前回指定した項目でソートされて表示されてしまいます。 いつも決まった順番で並び替えられたフォームを開くにはどうすればよいでしょうか? アドバイスお願いします。

  • フォームオブジェクトの削除

    HTMLで記述されたフォームオブジェクト(テキストBOXやコンボBOXなど)を 削除したい(画面上から消したい)のですが方法がわかりません。 知っている方いましたらご教授願います。

  • マクロ フォームのオブジェクト名

    マクロのフォームを利用して、入力シートを作成しています。 セルに入力したフォームのオブジェクト名を利用して、繰り返し記述を作ったのですが、エラーが発生してしまいます。 Form名.List = ary_d → 「オブジェクトが必要です」のエラー セルに入力したフォームのオブジェクト名では無理なんでしょうか? 解決方法があれば、参考にしたいので宜しくお願いします。

専門家に質問してみよう