2010-11-23 61 views
0

我有一个用户控件,它包含一系列单选按钮和一些文本框。如果选中某个单选按钮,我想验证两个文本字段的内容。CustomValidator Javascript函数认为单选按钮没有被选中

我的控制标记包含此:

<asp:TextBox ID="FromDate" runat="server" Columns="8"></asp:TextBox> 
<asp:TextBox ID="ToDate" runat="server" Columns="8"></asp:TextBox> 
<asp:RadioButton runat="Server" ID="RadioBetween" GroupName="Date" CssClass="date_group_options_control_radio"/> 
<asp:CustomValidator ID="DateValidator" runat="server" Display="Dynamic" ClientValidationFunction="ValidateDateFields_Client" OnServerValidate="ValidateDateFields"></asp:CustomValidator> 

<script type="text/javascript"> 
function ValidateDateFields_Client(source, args) 
{ 
    debugger; 
    var bRadioBetweenSelected = false; 

    var oRadio = document.getElementById('<%=RadioBetween.ClientID%>'); 
    if (oRadio != null && (oRadio.checked == true || oRadio["checked"] == true)) 
    { 
     bRadioBetweenSelected = true; 
    } 

    if (bRadioBetweenSelected) 
    { 
     var oFromDate = document.getElementById('<%=FromDate.ClientID%>'); 
     var oToDate = document.getElementById('<%=ToDate.ClientID%>'); 

     if (oFromDate != null && oToDate != null) 
     { 
      var sFromDate = oFromDate.value; 
      var sToDate = oToDate.value; 

      source.innerHTML = ValidateFromToDate(sFromDate, sToDate, args); 
     } 
     else 
     { 
      args.IsValid = true; 
     } 
    } 
    else 
    { 
     args.IsValid = true; 
    } 
} 
</script> 

ValidateFromToDate只检查值,并确保他们是理智的。

它永远不会进入检查,因为我似乎无法分辨RadioBetween是否被选中。然而,服务器端代码工作正常(它完全一样)。

如果我在控件中手动设置“检查”为“true”,则按预期工作。

如何验证此客户端以保存到服务器的旅程?我究竟做错了什么?这应该是相当琐碎的代码:-)

回答

0

目前尚不清楚为什么使用RadioButton。 通常有多个具有相同GroupName的RadioButton。 也许你只需要一个CheckBox?

+0

是的,有3个单选按钮全部选择它们是相互排斥的 – 2010-11-23 15:38:54

0

您可以借助FireBug或其他JavaScript调试工具本地化问题。将断点放入函数中,并查看在每个执行步骤中将变量插入到变量中。

+0

调试器认为这是不同的日期选项未检查。虽然 – 2010-11-23 15:59:34

相关问题