3

私は JavaScript が初めてで、ネストされた (繰り返される) ラジオ ボタンを検証したいと考えています。ロール上の 1 つのグループがチェックされていない場合に onsubmit が必要な場合、ブラウザはユーザーにプロンプ​​トを表示する必要があります。そのためのコードをどのように書くのですか?

<form id="form1" name="form1" method="post" 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
           While ( ( Repeat1__numRows <> 0 ) AND ( NOT rs_set1.EOF ) )
              counter = counter + 1
        %>
      <tr>
        <td width="20" bgcolor="#FFCCFF"><input type="radio" name="team<%=counter%>" id="radio" 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="radio2" 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="radio3" value="<%=(rs_set1.Fields.Item("team2").Value)%>" /></td>
        <td width="126" bgcolor="#FFCCFF"><%=(rs_set1.Fields.Item("team2").Value)%></td>
     </tr>

    <%
       Repeat1__index=Repeat1__index + 1
       Repeat1__numRows=Repeat1__numRows - 1
       rs_set1.MoveNext()
       Wend
    %>
     <tr>
        <td colspan="6" bgcolor="#50B2FF"><div align="center">
        <input type="submit" name="button" id="button" value="Submit" />
        </div></td>
     </tr>
  </table>
  <div align="center"></div>
</form>
4

2 に答える 2

1

私はあなたの質問に答えますが、アーロンが言ったように、私たちは得た答えから「学ぶ」べきです. .

最初に、動的に作成されたさまざまな名前のラジオ ボタンを検証していることを認識する必要があるため、動的に作成された名前と 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

于 2013-09-16T05:50:08.107 に答える