2015年11月25日
【jQuery】フォーカスアウト時に日付入力チェックを行う
テキストエリアから違う場所をクリック(フォーカスアウト)したときに
日付チェックを行い、日付形式で入力されていなければ、今日の日付を自動でセットされるようにします。
わけあってHTML5のdate関数を使えないとか、
入力値をそのままフォームで飛ばしたいとかいうときに使えるとおもいます。
以下、javascriptに記載する部分を3つに分けて記述しています。
3つまとめて記載すれば問題ないと思います。
フォーカスアウトイベント、日付の書式チェック、日付フォーマットです。
id="sample"指定したテキストエリアからフォーカスアウトした時のイベント
<script>
$('#sample').focusout(function(e) {
var str = $('#sample').children().val(); // ←入力した値を取得し、格納
// ブランクチェック
if (str != '') {
//日付形式チェック
if (!ckDate(str)) {
//今日の日付をyyyy/mm/ddでセットする。
$('#sample').children().val(dateFormat.format(new Date(), 'yyyy/MM/dd'));
}
}
});
</script>
日付入力の書式チェック
<script>
function ckDate(datestr) {
// 正規表現による書式チェック
if(!datestr.match(/^\d{4}\/\d{2}\/\d{2}$/)){
return false;
}
var vYear = datestr.substr(0, 4) - 0;
var vMonth = datestr.substr(5, 2) - 1; // Javascriptは、0-11で表現
var vDay = datestr.substr(8, 2) - 0;
// 月,日の妥当性チェック
if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){
var vDt = new Date(vYear, vMonth, vDay);
if(isNaN(vDt)){
return false;
}else if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){
return true;
}else{
return false;
}
}else{
return false;
}
}
</script>
日付のフォーマットを指定
<script>
dateFormat = {
fmt : {
"yyyy": function(date) { return date.getFullYear() + ''; },
"MM": function(date) { return ('0' + (date.getMonth() + 1)).slice(-2); },
"dd": function(date) { return ('0' + date.getDate()).slice(-2); },
"hh": function(date) { return ('0' + date.getHours()).slice(-2); },
"mm": function(date) { return ('0' + date.getMinutes()).slice(-2); },
"ss": function(date) { return ('0' + date.getSeconds()).slice(-2); }
},
format:function dateFormat (date, format) {
var result = format;
for (var key in this.fmt)
result = result.replace(key, this.fmt[key](date));
return result;
}
};
</script>
-
no image
-
no image
-
no image
この記事へのトラックバックURL
https://fanblogs.jp/tb/4455103
※ブログオーナーが承認したトラックバックのみ表示されます。