使用jQuery验证ASP.Net中的Radiobuttons

时间:2010-12-09 08:54:31

标签: asp.net jquery validation

我有一组单选按钮,我正在尝试使用ASP中的自定义验证器进行验证。我知道我不能在这些项目上使用必需的验证器,因为它们不符合ASP.Net中的必需验证器,我不能使用单选按钮列表,因为我有一个div,显示在单选按钮之间点击它们

<asp:RadioButton ID="showYear" runat="server" CssClass="reportYear" GroupName="dateSelection"/>Show by calendar year
//// Div to show if showYear is Clicked
<asp:RadioButton ID="showDate" runat="server" CssClass="reportDates" GroupName="dateSelection"/>Show by date range
//// Div to show if showDate is Clicked

这是自定义验证器:

<asp:CustomValidator ID="validateGroup1" runat="server" Display="Dynamic" ErrorMessage="Please select option for step 1" ClientValidationFunction="validateDateStyle" ValidationGroup="validateYTDSearch" />

我遇到的问题是这个javascript函数:

function validateDateStyle(oSrc, args) {

    $(document).ready(function () {

        var r1 = $('.reportDates').attr('checked');
        var r2 = $('.reportYear').attr('checked');

        alert(r1 + " " + r2);


    });

}

在使用验证器调用触发该功能时,它会弹出窗口

“Undefined Undefned”即使检查无线电也是如此。

为什么它不能正确拉出检查值?

由于

2 个答案:

答案 0 :(得分:2)

您可以使用jQuery .is()函数并使用:checked伪选择器检查单选按钮的已检查状态:

if($('.reportDates').is(':checked')) {
  // do stuff
}

答案 1 :(得分:0)

在尝试引用“checked”属性时获得未定义的原因是因为未选中/选择单选按钮元素时该属性不存在。每次选择/取消选择时,浏览器都会分别添加/删除该属性。

您最有可能要验证的是选择了一个单选按钮。如果您愿意,可以检查每个单选按钮的已检查状态,但如果您以后添加或删除单选按钮,则必须在两个位置更改代码。

相反,您可以使用更简单的解决方案,类似于Krof在其解决方案中提供的解决方案。例外是您检查单选按钮组。由于该组不是实际的html元素,因此必须按组名称选择元素。当您的页面呈现为html页面时,组名称将由“name”属性选择,如此。

$('[name$="dateSelection"]')

“$ =”运算符只是转换为“以...结尾”,因为ASP.Net可能在名称前加上内容面板ID或类似的东西。这有点像作弊,但这是一种选择你想要的简单方法。

你得到的是一组radiobuttons,它们的属性为“name”,其值以“dateSelection”结尾。

现在要确定是否在组中选择了单选按钮,您可以这样做:

$('[name$="dateSelection"]').is(':checked');

结果值告诉您组中的单选按钮是否被选中,并且是比检查每个单独的单选按钮状态更优雅的解决方案。更不用说,稍后添加/删除按钮时容易出错。