0

特に、「wmi_cell_phone」と呼ばれるTextBoxとRadioButtonList「wmi_send_sms」を含むフォームがあります。基本的には、選択したラジオの値が「Y」かどうかをチェックするバリデーターを作成する必要があります。この場合、TextBox の値が空かどうかをチェックします。空の場合は、値を入力するようにユーザーに通知する必要があります。

ここに私の.aspxコードがあります:

<asp:TextBox ID="wmi_cell_phone" runat="server" MaxLength="100" Width="200px"></asp:TextBox>
<asp:RadioButtonList ID="wmi_send_sms" RepeatDirection="Horizontal" runat="server" Width="140px" CssClass="radio"></asp:RadioButtonList>

コード ビハインド (VB):

wmi_send_sms.Items(0).Value = "Y"
wmi_send_sms.Items(1).Value = "N"

私のバリデーター

<asp:CustomValidator ID="val_wmi_send_sms" runat="server"
ClientValidationFunction="ValidateSMS"
Display= "Dynamic"
ErrorMessage="Please enter a valid phone number."> </asp:CustomValidator>

<script language="javascript" type="text/javascript">                  
function ValidateSMS(Source, args) 
{

  var smsRadio = document.getElementsByName('<%= wmi_send_sms.ClientID %>');
      var cellphone = document.getElementById('<%= wmi_cell_phone.ClientID %>');    

   for (var x = 0; x < smsRadio.length; x ++) 
   {
      if (smsRadio[x].checked) 
      {
          if (smsRadio[x].value == "Y") 
          {
              if (cellphone.value == "")
                   args.IsValid = false;
              else
                   args.IsValid = true;
          }
      }
    }
}
</script>

しかし、うまくいかないようです..多分私はRadioButtonListに間違った方法でアクセスしています..

4

2 に答える 2

1

ClientValidationFunctionがValidatorによって呼び出されたかどうかを最初にデバッグする必要があります。

何も選択されていなくてもバリデーターが機能する場合は、ValidateEmptyTextをtrueに設定する必要があります。

  • ValidationGroupの値は、送信ボタン、バリデーターコントロール、検証するコントロールの3か所すべてで一致していますか?
  • 送信ボタンにはCausesValidation=trueがありますか?
  • RadioButtonListにはCausesValidation =trueがありますか?
于 2010-11-20T20:34:36.713 に答える
0

「たぶん私はRadioButtonListに間違った方法でアクセスしています。」

うん。

生成されたマークアップを見てください。次のようになります。

<table id="wmi_send_sms" class="radio" style="width:140px;">
  <tr>
    <td>
      <input id="wmi_send_sms_0" type="radio" name="wmi_send_sms" value="Y" />
      <label for="wmi_send_sms_0">Y</label>
    </td>
    <td>
      <input id="wmi_send_sms_1" type="radio" name="wmi_send_sms" value="N" />
      <label for="wmi_send_sms_1">N</label>
    </td>
  </tr>
</table>

タグ<%= wmi_send_sms.ClientID %>は、ラジオボタンリストを囲むテーブルのIDを取得しています。

個人的には、クライアント側で作業する場合、回避する方がはるかに簡単だと思いますRadioButtonListRadioButtonプロパティを使用して2つのコントロールを作成し、GroupNameそれらを相互に関連付けます。

<asp:RadioButton ID="wmi_send_sms_y" runat="server" GroupName="wmi_send_sms" Text="Y" />
<asp:RadioButton ID="wmi_send_sms_n" runat="server" GroupName="wmi_send_sms" Text="N" />

次に、にアクセスして、バリデーターで「Y」がチェックされているかどうかを確認できます。<%= wmi_send_sms_y.ClientID %>

于 2010-11-21T08:15:37.750 に答える