私はあなたの質問に答えますが、アーロンが言ったように、私たちは得た答えから「学ぶ」べきです. .
最初に、動的に作成されたさまざまな名前のラジオ ボタンを検証していることを認識する必要があるため、動的に作成された名前と ID を使用してそれ自体を「繰り返す」スクリプトを作成する必要があります。
JavaScript の「カウンター」変数を宣言し、初期値ゼロを指定して、スクリプトを開始します。
<script Language="JavaScript">
<!--
function Form1_Validator(theForm) {
<% Dim jscounter
jscounter = 0
次に、javascript の繰り返し領域を開始し、javascript カウンターをインクリメントします。
While (NOT rs_set1.EOF)
jscounter = jscounter + 1
%>
次に、カウンター変数を名前に追加して動的にする JavaScript 変数を宣言し、変数に「false」の初期値を与えます。
var radioSelected<%= jscounter %> = false;
次に、その行のラジオ ボタンを繰り返します。名前に jscounter 変数が追加されていることに注意してください。
for (i = 0; i < theForm.team<%= jscounter %>.length; i++)
{
次に、考えられる 2 つのインスタンス (チェックされているかどうか) とそれらの処理方法を示します。
if (theForm.team<%= jscounter %>[i].checked)
radioSelected<%= jscounter %> = true;
}
if (!radioSelected<%= jscounter %>)
{
alert("Please select one of the \"team <%= jscounter %>\" options.");
return (false);
}
ほぼ完了...ここで、ループを終了し、JavaScript でボタンのすべての行が作成されるまで繰り返します。
<%
rs_set1.MoveNext()
Wend
If (rs_set1.CursorType > 0) Then
rs_set1.MoveFirst
Else
rs_set1.Requery
End If
%>
最後に、すべての検証が成功したことを知らせるアラートで JavaScript を閉じます。
alertsay = "All Validations have succeeded. "
alertsay = alertsay + "This is just a test page. There is no submission page."
alert(alertsay);
return (false);
}
//-->
</script>
注: 上記の 3 つの「警告」行は、デバッグ後に (必要に応じて) 削除し、「return (false);」を変更できます。フォームが送信されるように「true」にします。
それでは、フォームの HTML に移りましょう。
まず、この行をフォームの開始タグに追加します...
onsubmit="return Form1_Validator(this)"
次に、リピート領域を開始し、カウンターの初期値を 0 にすることを忘れないでください。
<% Dim counter
counter = 0
While (NOT rs_set1.EOF)
counter = counter + 1
%>
次に、ラジオボタンの「id」を変更して、「name」属性で行ったようにカウンター変数を使用します。
id="team<%=counter%>"
最後に、ループを終了し、すべての行が作成されるまで繰り返します。
<%
rs_set1.MoveNext()
Wend
If (rs_set1.CursorType > 0) Then
rs_set1.MoveFirst
Else
rs_set1.Requery
End If
%>
それでおしまい!
これがjavascript全体です。
<script Language="JavaScript">
<!--
function Form1_Validator(theForm) {
<% Dim jscounter
jscounter = 0
While (NOT rs_set1.EOF)
jscounter = jscounter + 1
%>
var radioSelected<%= jscounter %> = false;
for (i = 0; i < theForm.team<%= jscounter %>.length; i++)
{
if (theForm.team<%= jscounter %>[i].checked)
radioSelected<%= jscounter %> = true;
}
if (!radioSelected<%= jscounter %>)
{
alert("Please select one of the \"team <%= jscounter %>\" options.");
return (false);
}<%
rs_set1.MoveNext()
Wend
If (rs_set1.CursorType > 0) Then
rs_set1.MoveFirst
Else
rs_set1.Requery
End If
%>
alertsay = "All Validations have succeeded. "
alertsay = alertsay + "This is just a test page. There is no submission page."
alert(alertsay);
return (false);
}
//-->
</script>
そして、フォーム...
<form id="form1" name="form1" method="post" onsubmit="return Form1_Validator(this)" action="super4_engine.asp" >
<table width="442" border="0" align="left" cellpadding="3" cellspacing="3">
<tr>
<td colspan="6" bgcolor="#50B2FF"><div align="center"><strong>Set 1</strong></div></td>
</tr>
<% Dim counter
counter = 0
While (NOT rs_set1.EOF)
counter = counter + 1
%>
<tr>
<td width="20" bgcolor="#FFCCFF"><input type="radio" name="team<%=counter%>" id="team<%=counter%>" value="<%=(rs_set1.Fields.Item("team1").Value)%>" /></td>
<td width="126" bgcolor="#FFCCFF"><%=(rs_set1.Fields.Item("team1").Value)%>
<input name="super<%=counter%>" type="hidden" id="super<%=counter%>" value="<%=(rs_set1.Fields.Item("game_id").Value)%>" /></td>
<td width="20" bgcolor="#FFCCFF"><input type="radio" name="team<%=counter%>" id="team<%=counter%>" value="<%=(rs_set1.Fields.Item("def_stat").Value)%>" /></td>
<td width="66" bgcolor="#FFCCFF"><%=(rs_set1.Fields.Item("def_stat").Value)%></td>
<td width="27" bgcolor="#FFCCFF"><input type="radio" name="team<%=counter%>" id="team<%=counter%>" value="<%=(rs_set1.Fields.Item("team2").Value)%>" /></td>
<td width="126" bgcolor="#FFCCFF"><%=(rs_set1.Fields.Item("team2").Value)%></td>
</tr>
<%
rs_set1.MoveNext()
Wend
If (rs_set1.CursorType > 0) Then
rs_set1.MoveFirst
Else
rs_set1.Requery
End If
%>
<tr>
<td colspan="6" bgcolor="#50B2FF"><div align="center">
<input type="submit" name="button" id="button" value="Submit" />
</div></td>
</tr>
</table>
</form>
実際のデモはここで見ることができます... http://siteprevue.net/stackoverflow/radiovalidator.asp