4

ユーザーが入力した終了日が開始日より前である場合にエラーが発生するように、開始日と終了日を検証しようとしています。JavaScriptとカスタムバリデーターを使用してこれを行っていますが、「CheckDateisundefined」というランタイムエラーが発生します。

コードは問題ないように見えるので、これを解決するのは難しいことではないと思います。何かが足りないと思います。

どんな助けでも素晴らしいでしょう。

これが私のJavaScriptです。スクリプトタグにあり、コピーされていません。

function CheckDate(sender, args) {
    if (new date (document.getElementById("txtstartdate").value)
        > new (document.getElementById("TxtFinish").value)) {
        args.IsValid = false;
        return;
    }
    args.IsValid = true;
}

これが私のFinishDateコントロールの検証です

<asp:CustomValidator ID="CustomValidator29" runat="server" 
ErrorMessage="Finish Date should be greater than the Start Date" ClientValidationFunction="CheckDate"></asp:CustomValidator>

これ以上の情報が必要な場合は質問してください:)。

4

2 に答える 2

5

CompareValidatorを使用するだけです!

  <asp:CompareValidator ID="CompareValidator1" runat="server" 
    ControlToCompare="txtStartDate" ControlToValidate="txtEndDate" 
    Display="Static" ErrorMessage="'End Date' must not be earlier than 'From Date'"  Text="*"
    Operator="GreaterThanEqual" SetFocusOnError="True" Type="Date" 
    ValidationGroup="SearchGroup">

于 2012-10-15T13:06:08.047 に答える
1

これが私がしたことであり、それは完全に検証されます。使用しているコントロールの種類が正確にわからなかったため、基本的なテキストボックスを使用しました。「1983年7月21日01:15:00」のような値を入力します。

JavaScript:

<script type="text/javascript" >

        function CheckDate(sender, args) {

            var startDate = new Date(document.getElementById("txtStartDate").value);

            var finishDate = new Date(document.getElementById("txtFinishDate").value);

            if (startDate > finishDate) {
                args.IsValid = false;
            }
            else {
                args.IsValid = true;
            }
        }

    </script>

HTML:

<asp:CustomValidator ID="CustomValidator29" runat="server" 
    ErrorMessage="Finish Date should be greater than the Start Date" 
    ClientValidationFunction="CheckDate" ControlToValidate="txtStartDate">
</asp:CustomValidator>

<asp:TextBox id="txtStartDate" runat="server" />
<asp:TextBox id="txtFinishDate" runat="server" />

値と結果の表は次のとおりです。

txtStartDate:1983年7月21日01:15:00
txtEndDate:1983年7月25日01:15:00
有効:はい

txtStartDate:1983年7月25日01:15:00
txtEndDate:1983年7月21日01:15:00
有効:いいえ

txtStartDate:1983年7月21日01:15:00
txtEndDate:1983年7月21日06:15:00
有効:はい

txtStartDate:1983年7月21日06:15:00
txtEndDate:1983年7月21日01:15:00
有効:いいえ

于 2012-09-17T19:56:40.027 に答える