日付コントロールの入力書式の年部分を二桁("yy")に設定すると、不正入力時にInvalidValueイベントが発生しない
対象製品
InputMan for .NET 1.0J Web Forms Edition
発生環境
動作環境と同じ
状況
修正済み
詳細
Format.Patternプロパティに”yy/MM/dd”などと、年部分の表示を二桁に設定すると、「1_/04/26」などと、不完全な入力を行いフォーカスを移動しても、InvalidValueクライアント側イベントが発生しません。
また、フォーカス移動後は、年部分が1998年となり、「98/04/26」のように表示されます。
また、フォーカス移動後は、年部分が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>
不具合に対応した最新修正版は、アップデートページからダウンロードできます。
改定第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