我有一個用戶控件,它包含一系列單選按鈕和一些文本框。如果選中某個單選按鈕,我想驗證兩個文本字段的內容。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」,則按預期工作。
如何驗證此客戶端以保存到服務器的旅程?我究竟做錯了什麼?這應該是相當瑣碎的代碼:-)
是的,有3個單選按鈕全部選擇它們是相互排斥的 – 2010-11-23 15:38:54