アフィリエイト広告を利用しています

広告

posted by fanblog

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>








posted by newprogramer at 23:52| Comment(0) | TrackBack(0) | jQuery
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/4455103
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
検索
カテゴリーアーカイブ

最新記事
×

この広告は30日以上新しい記事の更新がないブログに表示されております。