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

「mm/dd」「mm/d」「m/dd」「m/d」
の形式で入力された日付を
[yyyy/mm/dd]に変換したいです。

javascriptで上記のような変換を自動で、入力した後
カーソルを移動させた時に行いたいのですが、方法が
わかりません。。

なんとか実現する方法はないでしょうか?
ご存知の方がいらっしゃたら何卒ご教授ください。
よろしくお願いします。

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

ベストアンサー

id:Sampo No.1

回答回数556ベストアンサー獲得回数104

ポイント200pt
<script>
function formdate( object ){
	m_d = object.value.split("/");
	str = "2007/";
	str += Math.floor(m_d[0]/10)%10;
	str += m_d[0]%10;
	str += "/";
	str += Math.floor(m_d[1]/10)%10;
	str += m_d[1]%10;
	object.value = str;
}

</script>

こんな関数を作っておいて、onChange="formdate(this)" とすればできます。

id:kalkal

できましたー!

ありがとうございます、たすかりました!

2007/01/10 20:28:30

その他の回答1件)

id:Sampo No.1

回答回数556ベストアンサー獲得回数104ここでベストアンサー

ポイント200pt
<script>
function formdate( object ){
	m_d = object.value.split("/");
	str = "2007/";
	str += Math.floor(m_d[0]/10)%10;
	str += m_d[0]%10;
	str += "/";
	str += Math.floor(m_d[1]/10)%10;
	str += m_d[1]%10;
	object.value = str;
}

</script>

こんな関数を作っておいて、onChange="formdate(this)" とすればできます。

id:kalkal

できましたー!

ありがとうございます、たすかりました!

2007/01/10 20:28:30
id:Yuhto No.2

回答回数19ベストアンサー獲得回数0

ポイント10pt

「mm/dd」「mm/d」「m/dd」「m/d」

の形式で入力された日付を

[yyyy/mm/dd]に変換したい

ということですが、

yyyyがシステム日付の年でよいのであれば・・・

Date date = new Date();

alert(date.getFullYear());

で補完できますね。


mmでもmでも、dでもddでも受け付けて0埋め補完するには、、

Date date = new Date();

var year = date.getFullYear();

var inp = document.forms["フォーム名"].オブジェクト名.value;

// TODO 入力チェック("/"が必ずひとつ含まれているかと、その前後が月日として妥当かどうか、正規表現でちぇっく)

var splitResult = inp.split("/");

var month = splitResult[0];

if(month.length == 1){

month = "0" + month;

}

var day = splitResult[1];

// TODO 入力チェック

if(day.length == 1){

day = "0" + day;

}

document.forms["フォーム名"].オブジェクト名.value = year + "/" + month + "/" + day;

のような具合でどうでしょうか?

入力した後

カーソルを移動させた時に行いたい

のであれば、該当するテキストボックスのonblurもしくはonchangeイベントに

上記のJavaScript関数を呼び出すように記述しておけばよいかと思います。

  • id:kalkal
    Yuhto様

    ご教授いただいて、ありがとうございます。
    前の方のお礼のコメントを書いている間に
    入れ違いになってしまったようです…。

    せっかくご回答いただいたのに大変申し訳ございません。。
  • id:Yuhto
    イエイエ。お気になさらず!

    入力チェックを少し考えて断念し(笑)、
    テストもしてみようかどうしようか迷っていたら
    ちょっとの差で先を越されてしまったようで・・・
    回答直後に気付きましたw
    RegExpオブジェクトを使って、該当する正規表現で予期せぬ文字が入ったときにはじく(エラーメッセージを表示するなり、無視するなりする)ことでもう少し親切な関数になるかもしれませんね。

    ま、なにより、解決されてよかったです!

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

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

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

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