2010-11-23 66 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

相關問題