コントロールの種別判定

[戻る]
Javascript初心者 2007/01/04(木) 17:37:55
コントロールの種別判定処理を書いているのですが、
ラジオボタンについては、
コントロールオブジェクト.type
で取れず
コントロールオブジェクト[index].type
で取れるようですがどうもどのコントロールでも動くように共通化できません。

コントロールの種別判定ってありがちそうなので、参考ソースを探しています。
部品、ライブラリなのでこのようなコードを知っている方いますでしょうか。

Blue 2007/01/04(木) 18:23:01
よくわからないけど、ちゃんと type で取れますよ?
実際どんなHTMLになっているのでしょうか?

試したの(HTMLは微妙。)
<html>
  <head>
    <script type="text/javascript">
      <!--
        function test()
        {
          var form1;
          var i;
          
          form1 =  document.forms[0];
          for (i = 0; i < form1.length; ++i)
          {
            alert(form1[i].type);
          }
        }
      //-->
    </script>
  </head>
  <body OnLoad="test()">
    <form>
      <input type="text" /><br />
      <input type="password" /><br />
      <input type="radio" /><br />
      <input type="checkbox" /><br />
      <input type="button" /><br />
      <input type="submit" /><br />
      <input type="reset" /><br />
      <input type="file" /><br />
    </form>
  </body>
</html>

Javascript初心者 2007/01/05(金) 09:10:10
テストコードありがとうございます。

ちなみにHTMLは以下で
<input type="radio" name="sei" value="1">男
<input type="radio" name="sei" value="2">女

Javascriptは、簡単にすると以下のようにしています。
("sei"という名前でアクセスしたい)

var ctrl = document.forms[0].sei;
@alert(ctrl.type);
Aalert(ctrl[0].type);

結果は、@が、undefinedで、Aがradioです。

var ctrl2 = document.forms[0][0];
alert(ctrl2.type);
こうすると、radioはとれるんですけど解決にならないし。

やりたいことは、指定した名前のコントロールの種別の判定なんですけど
radioの場合は、取得したコントロールが配列を持っているかどうかを
判別する必要がある?ということですかね。

Blue 2007/01/05(金) 14:40:56
lengthで配列数を求めて切り分けるとか。

if (document.forms[0].radio1.length > 0)
{
    for (i = 0; i < document.forms[0].radio1.length; ++i)
    {
        alert(document.forms[0].radio1[i].type);
    }
}
else
{
    alert(document.forms[0].radio1.type);
}

Javascript初心者 2007/01/05(金) 17:11:22
[[解決]]
上記でできました。
でもradioボタンだけ、このような処理をするところがちょっとかっこ悪いですね。
var ctrl = document.forms[0].sei;
常にctrl.typeが取れたら全部同じで書けるのに。

あきらめて、lengthをチェックします。何度もありがとうございました。

古いスレッドには追加発言できません。