newdwh2021/ecs/jskult-webapp/src/static/function/businessLogicScript.js
2023-06-02 15:52:20 +09:00

214 lines
6.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 検索フォーム
// 戻るボタンの関数
// 機能概要:メニュー画面に遷移する
function backToMenu(){
location.href = "/menu/";
}
// クリアボタンの関数
// 利用条件form名がsearch
// 利用条件2form入力値名がctrl_で始まる
function clr() {
const formElement = document.search
const formInputElements = Array.from(formElement.elements)
for (const formInput of formInputElements) {
if (formInput.name.startsWith('ctrl_')) {
formInput.value = "";
}
}
// 検索ボタンを再度非活性にする
formBtDisabled();
}
/**
* ボタンの活性非活性関数
* @param {*} buttonId ボタンのID デフォルトは`search_bt`
* @param {*} formId フォームのname デフォルトは`search`
* @param {*} all 全インプットが入力されている場合に活性化するかどうか
*/
function formBtDisabled(buttonId='search_bt', formId='search', all=false) {
const formElement = document[formId]
const formInputElements = Array.from(formElement.elements)
// 検査対象を
const checkTargetValueLength = formInputElements
.filter((elem) => elem.name.startsWith('ctrl_'))
.map((elem) => elem.value.length)
// 活性、非活性の判断
let validFlg = false;
if (all) {
validFlg = checkTargetValueLength.every((num) => num !== 0)
} else {
validFlg = checkTargetValueLength.some((num) => num !== 0)
}
if (validFlg == true) {
$(`#${buttonId}`).removeAttr('disabled');
// クリアボタンはあれば活性化する
if ($('#clear')) {
$('#clear').removeAttr('disabled');
}
}
else {
$(`#${buttonId}`).attr('disabled', 'disabled');
// クリアボタンはあれば非活性化する
if ($('#clear')) {
$('#clear').attr('disabled', 'disabled');
}
}
}
// ドロップダウンリスト再選択の関数
// 引数:ドロップダウンリストのID
// 引数:選択したいリスト選択表示文字列
function selectDropDowList(id, selectedName){
// 以前の検索条件再読み込み
var select = document.getElementById(id);
select = select.children[0];
var options = select.options;
if (options != null)
{
for(var i = 0; i < options.length; i++){
if(options[i].text === selectedName){
options[i].selected = true;
}
};
}
}
/**
* DatePickerを設定
*/
function enableDatePicker() {
// カレンダーの表示を日曜日始まりに変更
flatpickr.l10ns.ja.firstDayOfWeek = 0;
$('.date_picker').flatpickr(
{
locale: 'ja', // 日本語カレンダー
allowInput: true, // 入力可能にする
dateFormat: 'Y/m/d' // 日付のフォーマットを修正
}
)
}
// 日付入力チェック
// 引数:チェックするテキストボックスNo
function autoModifyDate($this){
// 日付フォーマットチェック
if($this.value === "" ||
(!$this.value.match(/^\d{4}\/\d{2}\/\d{2}$/) && !$this.value.match(/^\d{4}\d{2}\d{2}$/)))
{
$this.value = "";
return;
}
/** @type { string }*/
let strFormat = $this.value;;
// yyyyMMddの場合→yyyy/MM/dd
const datePatternMatches = strFormat.match(/^(\d{4})(\d{2})(\d{2})$/);
if (datePatternMatches){
strFormat = `${datePatternMatches[1]}/${datePatternMatches[2]}/${datePatternMatches[3]}`;
}
// yyyy/00/00yyyy/00/00の場合→yyyy/01/01yyyy/12/31
// yyyy/MM/00yyyy/MM/01の場合→yyyy/MM/01yyyy/MM/末日
// 開始日の場合
if ($this.name.includes('from')){
strFormat = strFormat.replace("00/00", "01/01");
strFormat = strFormat.replace("00", "01");
}
// 終了日の場合
else if ($this.name.includes('to')){
strFormat = strFormat.replace("00/00", "12/31");
const date = new Date(strFormat.slice(0, 4), strFormat.slice(5, 7), 0).getDate();
strFormat = strFormat.replace("00", date.toString());
}
$this.value = strFormat;
}
// 他のページで共通化しよう
// ページが読み込まれたときにsendクラスのボタンを押せないようにする
// 初期値をdisabledにしときゃいい
$(function(){
$(".send").prop('disabled',true);
});
// チェックボックス全選択関数
// 条件:チェックボックスのクラス名に"selectedページ数"というのがついていること
// 条件:ボタンにクラス名 send がついていること
function allOn(){
var selected = ".selected" + tableCurrentPage + " input.checkbox";
$(selected).prop("checked", true);
$(".send").prop('disabled',false);
}
// チェックボックス全解除関数
// 条件:チェックボックスのクラス名に"selectedページ数"というのがついていること
// 条件:ボタンにクラス名 send がついていること
function allOff(pageCount){
for (var i = 1; i <= pageCount; i++) {
var selected = ".selected" + i + " input.checkbox";
$(selected).prop("checked", false);
}
$(".send").prop('disabled',true);
}
// 検索結果のところのボタンをチェックが1個でも付いたら押せるようにして、チェックがなければ押せないようにする関数
// 条件:チェックボックスのクラス名に"selectedページ数"というのがついていること
// 条件:ボタンにクラス名 send がついていること
function resultBtDisablead(){
var selected = ".selected" + tableCurrentPage;
var cnt1 = $(selected + ' :checked').length;
selected += " input.checkbox";
if(cnt1 == 0) {
$(".send").prop('disabled',true);
}
else {
$(".send").prop('disabled',false);
}
}
// 前のスペースを許さない入力チェック
function checkSpaceForm($this)
{
var str=$this.value;
while(str.match(/(^\s+)/g))
{
str=str.replace(/(^\s+)/g, "");
}
$this.value=str;
}
// あいまい検索用に半角の英数字と%以外を許さない入力チェック
function checkAimaiSearhForm($this)
{
var str=$this.value;
while(str.match(/[^A-Z^a-z^0-9\%]/))
{
str=str.replace(/[^A-Z^a-z^0-9\%]/,"");
}
$this.value=str;
}
// 大文字小文字-以外を許さない入力チェック
function checkPassForm($this)
{
var str=$this.value;
while(str.match(/[^ -\~]/))
{
str=str.replace(/[^ -\~]/,"");
}
$this.value=str;
}
// 廃止予定
function DisplayErrorDialog(strMesssage) {
$("#errorTxt").html(strMesssage);
$("#error").dialog("open");
}