253 lines
7.5 KiB
JavaScript
253 lines
7.5 KiB
JavaScript
// 検索フォーム
|
||
|
||
// 戻るボタンの関数
|
||
// 機能概要:メニュー画面に遷移する
|
||
function backToMenu(){
|
||
location.href = "/menu/";
|
||
}
|
||
|
||
// クリアボタンの関数
|
||
// 利用条件1:form名がsearch
|
||
// 利用条件2:form入力値名が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/00~yyyy/00/00の場合→yyyy/01/01~yyyy/12/31
|
||
// yyyy/MM/00~yyyy/MM/01の場合→yyyy/MM/01~yyyy/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);
|
||
});
|
||
|
||
// 検索結果のところのボタンをチェックが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");
|
||
}
|
||
|
||
/* ult.jsから移植 */
|
||
// チェックボックス全選択関数
|
||
// 条件:チェックボックスのクラス名に"selected"というのがついていること
|
||
// 条件:ボタンにクラス名 send がついていること
|
||
function allOn(){
|
||
$(".selected").prop("checked", true);
|
||
$(".send").prop('disabled',false);
|
||
}
|
||
|
||
// チェックボックス全解除関数
|
||
// 条件:チェックボックスのクラス名に"selectedページ数"というのがついていること
|
||
// 条件:ボタンにクラス名 send がついていること
|
||
function allOff(){
|
||
$(".selected").prop("checked", false);
|
||
$(".send").prop('disabled',true);
|
||
}
|
||
|
||
// 検索結果のところのボタンをチェックが1個でも付いたら押せるようにして、チェックがなければ押せないようにする関数
|
||
// 条件:チェックボックスのクラス名に"selected"というのがついていること
|
||
// 条件:ボタンにクラス名 send がついていること
|
||
function resultBtDisablead(){
|
||
var cnt1 = $('.checkNum input:checkbox:checked').length;
|
||
console.log(cnt1);
|
||
if(cnt1 == 0) {
|
||
$(".send").prop('disabled',true);
|
||
}
|
||
else {
|
||
$(".send").prop('disabled',false);
|
||
}
|
||
}
|
||
|
||
// Enter押下時にsubmitさせなくする
|
||
$(function() {
|
||
$(document).on("keypress", "input:not(.allow_submit)", function(event) {
|
||
return event.which !== 13;
|
||
});
|
||
});
|
||
|
||
// 数字-以外を許さない入力チェック
|
||
function checkNumberForm($this)
|
||
{
|
||
var str=$this.value;
|
||
while(str.match(/[^\d\-]/))
|
||
{
|
||
str=str.replace(/[^\d\-]/,"");
|
||
}
|
||
$this.value=str;
|
||
}
|
||
|
||
// 数字以外を許さない入力チェック
|
||
function checkNumberOnlyForm($this)
|
||
{
|
||
var str=$this.value;
|
||
while(str.match(/[^\d]/))
|
||
{
|
||
str=str.replace(/[^\d]/,"");
|
||
}
|
||
$this.value=str;
|
||
} |