一連のラジオ ボタンといくつかのテキスト フィールドを含むユーザー コントロールがあります。特定のラジオ ボタンがオンになっている場合、2 つのテキスト フィールドの内容を検証したいと考えています。
私のコントロールマークアップにはこれが含まれています:
<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 がチェックされているかどうかわからないので、チェックには入りません。ただし、サーバー側のコードは問題なく動作します (まったく同じことを行います)。
コントロールで Checked を手動で「true」に設定すると、期待どおりに機能します。
このクライアント側を検証してサーバーへの旅行を保存するにはどうすればよいですか? 私は何を間違っていますか?これはかなり些細なコードのはずです:-)