私は C# の初心者で、DateTime に問題があります。日付に 3 つの個別のドロップダウンまたはテキストボックスを使用したくありません。しかし、ユーザー入力を日付の形式 (dd/mm/yyyy) に制限できるようにしたいと考えています。どうやってやるの?
注:私はただの学習者なので、あなたが書いたコードを説明してください
こんにちは、javascript を使用して日付フィールドを制限できます。
私のコードの下を参照してください
aspxページのテキストボックス、
<asp:Textbox ID="txtDate" runat="server" />
以下のようにjavascriptを使用します
<script type="text/javascript" language="javascript">
function ValidateDateOf() {
DayObj = new Date();
var txtdate = document.getElementById('<%=txtDate.ClientID %>').value;
var arr = txtdate.split("/");
var leapday = arr[0];
var leapmonth = arr[1];
var leapyear = arr[2];
var CurDate = DayObj.getDate();
var CurYear = DayObj.getFullYear();
var CurMonth = DayObj.getMonth();
if (leapday == '') {
alert('day Field is required');
return false;
}
if (leapmonth == '') {
alert('month Field is required');
return false;
}
if (leapyear == '') {
alert('year Field is required');
return false;
}
if (parseInt(leapday) > 29) {
alert('invalid date');
return false;
}
if (!isleap(leapyear)) {
if (parseInt(leapday) > 28) {
alert('invalid date');
return false;
}
return true;
}
return true;
}
function isleap(leapyear) {
var yr = leapyear;
if ((parseInt(yr) % 4) == 0) {
if (parseInt(yr) % 100 == 0) {
if (parseInt(yr) % 400 != 0) {
return false;
}
if (parseInt(yr) % 400 == 0) {
return true;
}
}
if (parseInt(yr) % 100 != 0) {
return true;
}
}
if ((parseInt(yr) % 4) != 0) {
return false;
}
}
ASP.NET AJAX Toolkitを見てください。これには、探しているものを実現するサンプルの MaskedEdit ボックスがあります。
または、正規表現を使用してバリデーターを使用して形式を確認し、2 つ目のバリデーターで日付が本物であることを確認することもできます (つまり、うるう年の問題)。
しかし、よりクリーンな UI の方法は、バリデータと共に MaskedEdit システムを使用することだと思います。
AJAX コントロール ツールキットの CalendarExtender を使用できます。