html5の方が簡単なことはわかっていますが、html4またはxhtmlを使用する必要があり、どういうわけかhtml5なしでは情報を見つけることができません。誰かが私に日付を入力する方法を教えてくれますか?
<input type="text" name ="sometext">
通常のhtml4またはxhtmlは、入力のタイプとして日付タイプを持っていないようです。
前もって感謝します。
この質問は、他のいくつかの StackOverflow スレッドで尋ねられ、回答されていますが、同じ問題に直面しているため、ここに詳細があります。
jQuery DatePicker を使用することは良い出発点ですが、実際のカレンダー ポップアップ以外ではフォーマットや最小値と最大値の整合性を強制しません。つまり、悪いものを入力または貼り付けることができます。
関数を使用して JS で「古い方法」を実行する方法をデモするサイトへの 2 つのリンクを次に示し ます 。 /form/javascript-date-validation.php
そして、これを行うための別の非常に優れた方法へのStackOverflowリンクがあります: JavaScriptで「無効な日付」のDateインスタンスを検出する
個人的には、最小および最大の日付範囲の検証と制限が必要です (SQL は 1773 年 1 月 1 日より前の日付を嫌い、誰かが私のアプリでそれを試しました)。日付文字列が有効かどうかを通知する関数を接続し、それを入力の onchange イベントに接続します。
私のHTMLは次のとおりです。
私は ASP.NET と jQuery の DatePicker も使用しているので、重要な要素は onblur イベントです。
FixValidDate() 関数の JS は次のとおりです。
var availableDateFormats = ["mmddyyyy","mm/dd/yyyy","mm-dd-yyyy","yyyy/mm/dd","yyyy-mm-dd"];
function FixValidDate(txtDate,nulls, minDate, maxDate) {
//debugger;
formats =
{
'mmddyyyy':{
're':/^(\d{1,2})(\d{1,2})(\d{4})$/,
'month': 1,'day': 2, year: 3
},
'mm/dd/yyyy':{
're':/^(\d{1,2})[/](\d{1,2})[/](\d{4})$/,
'month': 1,'day': 2, year: 3
},
'mm-dd-yyyy':{
're':/^(\d{1,2})[-](\d{1,2})[-](\d{4})$/,
'month': 1,'day': 2, year: 3
},
'yyyy/mm/dd':{
're':/^(\d{4})[/](\d{1,2})[/](\d{1,2})$/,
'month': 2,'day': 3, year: 1
},
'yyyy-mm-dd':{
're':/^(\d{4})[-](\d{1,2})[-](\d{1,2})$/,
'month': 2,'day': 3, year: 1
}
}
dateText = txtDate.value;
matched = false;
for(i=0; i<availableDateFormats.length; i++)
{
f = formats[availableDateFormats[i]];
match = dateText.match(f.re);
if(match)
{
matched = true;
month = match[f.month];
day = match[f.day];
year = match[f.year];
//TODO validate if the numbers make sense
txtDate.value = month+"/"+day+"/"+year;
}
}
if (!matched && nulls) {
txtDate.value = "";
return false;
} else {
var timestamp = Date.parse(txtDate.value);
if (isNaN(timestamp) == false) {
var d = new Date(timestamp);
if (minDate != null) {
if (d < minDate) {
txtDate.value = "";
return false;
}
}
if (maxDate != null) {
if (d > maxDate) {
txtDate.value = "";
return false;
}
}
} else {
txtDate.value = "";
return false;
}
}
return true;
}
これは、私が約 10 年間 JS 用に使用してきた古いライブラリからのものです。別の JS 検証関数を簡単に見つけて、私のものと入れ替えることができます。
私の機能では、さまざまな日付形式を受け入れる必要があり、それが不適切な形式である場合は、フィールドを空白にして、ユーザーを同じボックスに入れておきます。あなたはそれを変えることができます。
HTML4 にはデフォルトで日付を入力するためのタグがありません。JQUERY などのサードパーティ ライブラリを含めるだけで済みます。
この例をチェックしてください http://jqueryui.com/datepicker/
基本的なinput
要素は、HTML (HTML5 以外) が持つすべてです。すべてのテキスト入力に対して、マークアップが関連付けられたラベルが必要です。通常、予想される入力形式に関する情報も含める必要があります。これは、言語や文化によって異なるためです。
<label for="birth">Date of birth (day/month year):</label>
<input id="birth" type="text" name="birth" size="10">
また、JavaScript を使用してクライアント側のユーザー入力を事前にチェックし、データ エラーが発生した場合にユーザーに迅速に応答できるようにする必要があります。当然、チェックはサーバー側で複製する必要があります。