holiday_jp-jsを使って営業日/休業日を判定するサンプルを作成しました。
サンプル
入力した日付が休業日かどうかを判定し,その結果を別の文字列(1行)フィールドに表示します.
フォーム設定
コード
下記JSを順に読み込みます.
- holiday_jp.min.js (こちらからダウンロード)
- sample.js (下記参照)
・sample.js
(function(){"use strict";varcustomHolidays=[{// 会社独自の休日設定date:'1/2',name:'年末年始休暇'},{date:'1/3',name:'年末年始休暇'},{date:'12/29',name:'年末年始休暇'},{date:'12/30',name:'年末年始休暇'},{date:'12/31',name:'年末年始休暇'}];functiongetCustomHoliday(date){varformattedDate=(date.getMonth()+1)+'/'+date.getDate();returncustomHolidays.find(function(customHoliday){returncustomHoliday.date===formattedDate});}functionisWeekday(date){return(!holiday\_jp.isHoliday(date)&&!getCustomHoliday(date)&&date.getDay()!==0&&date.getDay()!==6);}functiongetDayName(date){varholidays=holiday\_jp.between(date,date);if(holidays.length)returnholidays[0].name;varcustomHoliday=getCustomHoliday(date);if(customHoliday)returncustomHoliday.name;varday=date.getDay();if(day===0)return'日曜日';if(day===6)return'土曜日';return'';}functionupdateDayInfoField(event){vardate=newDate(event.record['date'].value);vardayInfoString='';if(isWeekday(date)){dayInfoString='営業日';}else{vardayName=getDayName(date);dayInfoString='休業日'+'('+dayName+')';}event.record['dayInfo'].value=dayInfoString;}functionupdateDateField(event){vardate=newDate(event.record['date'].value);if(!isWeekday(date)&&confirm('指定日が休業日です.直前の営業日にしますか?')){while(!isWeekday(date)){date.setDate(date.getDate()-1);}event.record['date'].value=date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate();}}// レコード作成/編集:祝日名などをdayInfoフィールドに代入kintone.events.on(['app.record.edit.change.date','app.record.create.change.date'],function(event){// updateDateField(event); // 指定日が休業日なら直前の営業日にするupdateDayInfoField(event);returnevent;});// レコード作成/編集:dayInfoフィールドを編集不可にするkintone.events.on(['app.record.edit.show','app.record.create.show'],function(event){event.record['dayInfo'].disabled=true;updateDayInfoField(event);returnevent;});})();
「指定日が休業日なら直前の営業日にする」処理を追記しました. 70行目のコメントアウト部を有効にすると実装できます.