人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

htmlで日付の入力フォームを作成しています。
「mm/dd」「mm/d」「m/dd」「m/d」
の形式で入力された日付を
[yyyy/mm/dd]に変換したいです。

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

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

●質問者: kalkal
●カテゴリ:インターネット ウェブ制作
✍キーワード:DD HTML JavaScript MM カーソル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Sampo
●200ポイント ベストアンサー
<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)" とすればできます。

◎質問者からの返答

できましたー!

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


2 ● Yuhto
●10ポイント

「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関数を呼び出すように記述しておけばよいかと思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ