htmlで日付の入力フォームを作成しています。

「mm/dd」「mm/d」「m/dd」「m/d」
の形式で入力された日付を
[yyyy/mm/dd]に変換したいです。
直接[yyyy/mm/dd]と入力した場合や空欄の場合
は変換を行わないようにしたいです。

http://q.hatena.ne.jp/1168423287

以前にも同じような質問をして、その時は解決
したのですが、新たな問題として、

「mm/dd」「mm/d」「m/dd」「m/d」入力時は
正しく[yyyy/mm/dd]となるのですが、

・直接[yyyy/mm/dd]と入力した場合
・「mm/dd」と入力して[yyyy/mm/dd]と変換され たあとに[dd]だけ修正した場合
・フォーカスした後、何も入力せずにカーソルを
 はずした場合

などに意図しない数値に変換されてしまいます。
これを回避するためのソースを教えていただけないでしょうか。


たびたび同じような質問で恐縮なのですが、
ご存知の方がいらっしゃたらご教授いただけないでしょうか?
よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/02/21 17:19:27
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:SALINGER No.1

回答回数3454ベストアンサー獲得回数969

ポイント150pt

/が1個のときだけ変換するようにすればいいかな

<html>
<head>
<script Language="javaScript">
<!--
function formdate( object ){
	m_d = object.value.split("/");
	date = new Date();
	year = date.getFullYear();
	if(m_d.length == 2){
		month = m_d[0];
		if(month.length == 1){
			month = "0" + month;
		}		
		day = m_d[1];
		if(day.length == 1){
			day = "0" + day;
		}
		object.value = year + "/" + month + "/" + day;
	}
}
// -->
</script>
</head>
<body>
<input type="text" onChange="formdate(this)" />
</bocy>
</html>
id:kalkal

ありがとうございます!

さっそく実験してみましたらちゃんとできました。

2007/02/21 17:11:17
id:j_kimi No.2

回答回数32ベストアンサー獲得回数4

ポイント150pt

こんな感じではどうでしょうか。

http://td200wr.zapto.org/html/work/test03.html

id:kalkal

サンプルまで作っていただいて

本当にありがとうございます!

yyyy/mm/d

と入力した時もyyyy/mm/ddに変換

できるのですね。

2007/02/21 17:17:35

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません