日付コントロールの入力書式の年部分を二桁("yy")に設定すると、不正入力時にInvalidValueイベントが発生しない

文書番号 : 23918     文書種別 : 不具合     最終更新日 : 2007/06/06
文書を印刷する
対象製品
InputMan for .NET 1.0J Web Forms Edition
発生環境
動作環境と同じ
状況
修正済み
詳細
Format.Patternプロパティに”yy/MM/dd”などと、年部分の表示を二桁に設定すると、「1_/04/26」などと、不完全な入力を行いフォーカスを移動しても、InvalidValueクライアント側イベントが発生しません。
また、フォーカス移動後は、年部分が1998年となり、「98/04/26」のように表示されます。
回避方法
この問題は改定第5版(v1.0.2007.720)で修正されました。
不具合に対応した最新修正版は、アップデートページからダウンロードできます。
改定第5版より前のバージョンでは次の方法で回避可能です。

ASPXファイルで、</form>と</body>の間に次の実装を追加します。

<script language = "javascript">
DateFieldCollection.prototype.GetGregorianYear = function() {
    var field = this.GetFieldByID(DateFieldID.ID_Year) ;
    if (this.HasFourDigitYearField())
    {
        return field.GetValue();
    }   
    else if (this.HasTwoDigitYearField())
    {
        var year = field.GetValue();
        if (year != -1 && year != -2)
        {
            var yearMax = (parseInt(this.InternalTwoDigitYearMax() / 100)) * 100 + year;
            var yearMin = (parseInt((this.InternalTwoDigitYearMax() - 99) / 100)) * 100 + year;
            if (yearMax <= this.InternalTwoDigitYearMax() && yearMax >= this.InternalTwoDigitYearMax() - 99)
            {
                year = yearMax;
            }
            else if (yearMin <= this.InternalTwoDigitYearMax() && yearMin >= this.InternalTwoDigitYearMax() - 99)
            {
                year = yearMin;
            }
        }
        return year;
    }
    else
    {
        return this.hideYear;         
    }
}  
</script>
キーワード
INME06184

この文書は、以前は次のバグレポートIDで公開されていました : 6972