「mm/dd」「mm/d」「m/dd」「m/d」
の形式で入力された日付を
[yyyy/mm/dd]に変換したいです。
javascriptで上記のような変換を自動で、入力した後
カーソルを移動させた時に行いたいのですが、方法が
わかりません。。
なんとか実現する方法はないでしょうか?
ご存知の方がいらっしゃたら何卒ご教授ください。
よろしくお願いします。
<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)" とすればできます。
<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)" とすればできます。
できましたー!
ありがとうございます、たすかりました!
「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関数を呼び出すように記述しておけばよいかと思います。
できましたー!
ありがとうございます、たすかりました!