コントロールの種別判定処理を書いているのですが、
ラジオボタンについては、
コントロールオブジェクト.type
で取れず
コントロールオブジェクト[index].type
で取れるようですがどうもどのコントロールでも動くように共通化できません。
コントロールの種別判定ってありがちそうなので、参考ソースを探しています。
部品、ライブラリなのでこのようなコードを知っている方いますでしょうか。
よくわからないけど、ちゃんと 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>
テストコードありがとうございます。
ちなみに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);
②alert(ctrl[0].type);
結果は、①が、undefinedで、②がradioです。
var ctrl2 = document.forms[0][0];
alert(ctrl2.type);
こうすると、radioはとれるんですけど解決にならないし。
やりたいことは、指定した名前のコントロールの種別の判定なんですけど
radioの場合は、取得したコントロールが配列を持っているかどうかを
判別する必要がある?ということですかね。
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);
}
上記でできました。
でもradioボタンだけ、このような処理をするところがちょっとかっこ悪いですね。
var ctrl = document.forms[0].sei;
常にctrl.typeが取れたら全部同じで書けるのに。
あきらめて、lengthをチェックします。何度もありがとうございました。