ベネフィットステーションのすくすくファミリーサポートお申込み内容入力

    
      
  • /*
     * @title ベネフィットステーションのすくすくファミリーサポートお申込み内容入力
     * @description my bookmarklet
     * @include http://*
     * @license MIT License
     * @require 
     */
    
    javascript:(function(){
      // --- 設定項目(【】の中身をご自身の情報に変更してください) ---
      const config = {
        childName: "【お子様名】",
        birthYear: "【2020】",
        birthMonth: "【4】",
        birthDay: "【1】",
        pref: "【東京都】",
        officeName: "【○○ファミリー・サポート・センター】",
        bankCode: "【0001】",
        bankName: "【ギンコウメイ】",
        branchCode: "【001】",
        branchName: "【シテンメイ】",
        accountNo: "【1234567】",
        accountHolder: "【コウザ メイギ】"
      };
    
      // --- 実行日の「前月」を自動計算 ---
      const now = new Date();
      now.setMonth(now.getMonth() - 1);
      const prevMonthVal = String(now.getMonth() + 1);
    
      // --- Vue / HTML5 イベント発火付きの入力セット関数 ---
      const setNativeVal = (el, val) => {
        if (!el) return;
        const proto = Object.getPrototypeOf(el);
        const setter = Object.getOwnPropertyDescriptor(proto, 'value')?.set || Object.getOwnPropertyDescriptor(el, 'value')?.set;
        if (setter) {
          setter.call(el, val);
        } else {
          el.value = val;
        }
        el.dispatchEvent(new Event('input', { bubbles: true }));
        el.dispatchEvent(new Event('change', { bubbles: true }));
      };
    
      // 1. ラジオボタン選択(「はい」をチェック)
      document.querySelectorAll('input[type="radio"]').forEach(radio => {
        const label = radio.closest('label') || radio.parentElement;
        if (label && label.innerText.includes('はい')) {
          radio.checked = true;
          radio.dispatchEvent(new Event('change', { bubbles: true }));
        }
      });
    
      // 2. テキストエリア項目の一括入力
      const textareas = Array.from(document.querySelectorAll('textarea'));
      const textVals = [
        config.childName,
        config.pref,
        config.officeName,
        config.bankCode,
        config.bankName,
        config.branchCode,
        config.branchName,
        config.accountNo,
        config.accountHolder
      ];
    
      textareas.forEach((ta, idx) => {
        if (textVals[idx] !== undefined) {
          setNativeVal(ta, textVals[idx]);
        }
      });
    
      // 3. セレクトボックス(生年月日・ご利用月)の選択
      const selects = Array.from(document.querySelectorAll('select'));
      if (selects.length >= 4) {
        const setSelectVal = (selectEl, val) => {
          const targetOpt = Array.from(selectEl.options).find(o => 
            o.value === String(val) || 
            o.text.includes(String(val) + '月') || 
            o.text.includes(String(val) + ' 年') || 
            o.text.includes(String(val) + ' 日')
          );
          if (targetOpt) {
            setNativeVal(selectEl, targetOpt.value);
          }
        };
    
        setSelectVal(selects[0], config.birthYear);
        setSelectVal(selects[1], config.birthMonth);
        setSelectVal(selects[2], config.birthDay);
        setSelectVal(selects[3], prevMonthVal);
      }
    
      alert('入力完了(ご利用月: ' + prevMonthVal + '月)');
    })();
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2026/08/20 23:43:07 - 2 days ago