我有一个包含其中一个名为“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>
Bu它似乎不起作用..也许我正在以错误的方式访问RadioButtonList ..
答案 0 :(得分:1)
如果Validator调用ClientValidationFunction,则应首先进行调试。
如果即使没有选择任何内容,Validator仍然有效,您必须将ValidateEmptyText设置为true。
答案 1 :(得分: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。
就个人而言,在客户端工作时,我发现避免RadioButtonList
更容易。只需创建两个RadioButton
控件,使用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" />
然后,您可以通过访问<%= wmi_send_sms_y.ClientID %>