0

私は ASP.NET を初めてRangeValidator使用し、18 歳以上の生年月日を確認するために を設定したいと考えています。設定しましたが、機能していません。

どうすれば解決できますか?

<asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="txtDOB"
                    ErrorMessage="less than 18 " MaximumValue="01/01/1995" MinimumValue="01/01/1888"
                    SetFocusOnError="True" Type="Date" Style="color: #FF0000;"></asp:RangeValidator> 
4

1 に答える 1

3

asp:CustomValidatorクライアント側の JavaScript 関数でを使用することをお勧めします。

カスタムバリデーター

あなたはこのようなことをすることができます(これはテストされていないことに注意してください、の頭のすぐ上にあります):

<asp:CustomValidator ID="CustomValidator1" runat="server" 
    EnableClientScript="true"
    ErrorMessage="less than 18"
    ClientValidationFunction="checkDate" 
    ControlToValidate="txtDOB">
</asp:CustomValidator> 

日付がこの形式「dd/MM/yyyy」で書かれていると仮定します

function checkDate() {
   var enteredDate=document.getElementById('<%=txtDOB.ClientID%>').value;
   var dateValues=enteredDate.split("/");
   var dateToCheck = new Date(dateValues[2], dateValues[1]-1, dateValues[0]);
   var today = new Date();
   var dateValid = new Date(today.getFullYear()-18, today.getMonth()-1, today.getDate());
   if (dateToCheck < dateValid) {
     args.IsValid = false;
   }
   else {
     args.IsValid = true;
   }
}

ノート

  1. javascript は 1 月に 0 を使用するため、月には -1 が使用されます。
  2. JavaScript が無効になっている場合に備えて、ServerValidation 関数をカスタム バリデータに追加する必要があります。
于 2013-04-02T12:22:29.427 に答える