フォームブリッジ で本日から1ヶ月以上後の日付しか選択できないようにする

初心者で恐縮なのですが、
フォームブリッジで質問があります。

「解約日」という日付選択フォームがありまして、
今日から1ヶ月以上後の日付しか選択できないようにしたいです。

例えば今日が7月17日だとすると、
解約日は8月18日以降しか選択できない、という具合です。

(1ヶ月後と書きましたが、
30日後でも31日後でも問題ありません)

 

現状ではこのようなことが
可能なのどうかもわかりません。
恐れ入りますがご教授のほどよろしくお願い致します。

方法としては2通りあるかと思います。

機能で日付の期間バリデーションがあるかと思います。

設定すると state にある fields の該当 field に validations が追加されます。

このfb.events.form.created イベントでバリデーションのパラメータを変更することで、30日後のバリデーションが可能かと思います。

var d = new Date();
d.setDate(d.getDate() + 30);fields[0].validations[0].params[1] = d.getYear() + '-' + (d.getMonth()+1) + '-' + d.getDate();

 

しかし、この方法だとバリデーションメッセージが固定のものとなるため、変更したくなるかと思います。

その場合、任意のバリデーションを追加することができます。

任意のバリデーションを追加し、解約日フィールドにバリデーションを追加することで機能します。

 

参考 https://fb.kintoneapp.com/user/customize.html

 

以上、参考になりますでしょうか?

ありがとうございます。
いろいろ試してみたのですが、完全に行き詰まっています。

①JavaScriptでファイル(拡張子がjs)を作成してアップロードしたのですが、
そもそも読み込まれてないようです。

作成したファイルは以下画像です。
(alartで読み込まれたかどうかチェックしてます)

②初歩的な質問になるかもしれないのですが、
fields[0]←このカッコ内の数字は何を指しているのでしょうか?

 

以上ご回答いただけると幸いです。
何卒よろしくお願い申し上げます。

 

fb.events.form.created イベントで、console.log(state.fields) をしてみると、そのフォームの全フィールドが配列の形式で確認することができます。

目的のフィールドが配列のどの位置にあるか確認して、fields[n] の n を決めます。

上記のコードでは、一番上のフィールドに対して custom_validation1 を追加するコードになっています。

 

以上、参考になりますでしょうか?

ありがとうございます。

無事にできました!

こちらを参考にして日付入力に同様の設定をして大変便利に使わせていただいているのですが、別のjavascriptを設定するとどちらの制御もきかなくなってしまうため、質問させていただいてもよろしいでしょうか。

 

1つ目「日付を2日後より後のみ入力できる」

(function () {

    ‘use strict’;

    fb.events.form.created.push(function (state) {
        state.fields[n].validations.push({
            params: [],
            rule: ‘custom_validation1’
        });
        return state;
    });

    fb.addValidators = function (state) {
        return {
            custom_validation1: {
                getMessage: function (日付, params) {
                    return ‘2 days later or more’;
                },
                validate: function (value, params) {
                    const min = new Date();
                    min.setDate(min.getDate() +1);
                    return value > min;
                }
            }
        };
    };
})();

 

 

2つ目「メールアドレスをルックアップ(4か所)フィールドにコピー」

(function() {
  “use strict”;

  fb.events.form.created = [function (state) {
    state.record[‘lookup01’].value = state.record[‘__kintoneAppAuthenticationEmail__’].value; 
    state.record[‘lookup02’].value = state.record[‘__kintoneAppAuthenticationEmail__’].value; 
state.record[‘lookup03’].value = state.record[‘__kintoneAppAuthenticationEmail__’].value; 
    state.record[‘lookup04’].value = state.record[‘__kintoneAppAuthenticationEmail__’].value; 
/*メールアドレスをルックアップフィールドにコピー*/

    return state;
  }];
})();

 

 

上記の2つとも動くようにしたいです。
勉強不足で恐縮ですが、アドバイスいただけますと幸甚です。
どうぞよろしくお願いいたします。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。