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

https://developer.cybozu.io/hc/ja/community/posts/360016773086-%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%83%96%E3%83%AA%E3%83%83%E3%82%B8-%E3%81%A7%E6%9C%AC%E6%97%A5%E3%81%8B%E3%82%89%EF%BC%91%E3%83%B6%E6%9C%88%E4%BB%A5%E4%B8%8A%E5%BE%8C%E3%81%AE%E6%97%A5%E4%BB%98%E3%81%97%E3%81%8B%E9%81%B8%E6%8A%9E%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B

 

上記投稿を参考に更に別の日付フィールドに制限をかけたいと考えております。

 

ですが、state.fields[○○]

の○○の部分が分かりません。

さらに、jsフォルダをアップし、ソースの確認をしますと、

Uncaught SyntaxError: Invalid or unexpected token
Uncaught SyntaxError: Unexpected token (

 

と、出ており、対処が分かりません。

 

初心者の質問で恐れ入りますが、ご教授のほどよろしくお願い致します。

cstapの友利と申します。

state.fields[n]

のnはn番目のフォームということを表しています。

(function() {
  "use strict";

  fb.events.form.created = [function (state) {
    console.log(state.fields);
    return state;
  }];
})();

このコードを読み込むことでお使いのブラウザの開発者ツールでstate.fieldsの中を確認することができます。

state.fieldsの中の要素のcodeという部分が設定されたフィールドコードになるのでそれにあった番号を選んでください。

友利優希様

 

ご丁寧な解説ありがとうございます。

そちらで、何番目かのフォームかは理解いたしたが、

「ReferenceError: alart is not defined」

というエラーメッセージが表示されてしまします。

 

こちら、alartを変数宣言しようとしたのですが、うまくいきません。

初心者の質問で大変恐縮ではございますが、お時間あります時にご説明して頂ければ幸いです。

 

宜しくお願い致します。

alartはおそらくalertのタイピングミスかと思われます。

またalertの行は確認用なので削除して大丈夫です。

友利優希様

お世話になっております。

アラートの件、ご指摘ありがとうございます。

そちら修正しました所、エラーはなくなりましたが、入力制限機能が働きません。

下記に画像を添付させていただきますので、お手数をおかけしますが、

間違い個所などありましたらご指摘いただけませんでしょうか。

宜しくお願い致します。

 

比較の部分が正しくかけていないように思われます。

以下のコードで正しく動作すると思います。

(function () {

'use strict';

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

fb.addValidators = function (state) {
return {
custom_validation1: {
getMessage: function (fieldCode, params) {
return '任意のメッセージ1';
},
validate: function (value, params) {
const min = new Date();
min.setDate(min.getDate() +30);
return value > min;
}
}
};
};
})();

 

友利優希 様

ご丁寧なご回答ありがとうございます。

本件、全てのご質問にご丁寧に解説までしてご回答いただきましたこと重ねてお礼申し上げます。

 

おかげさまで動作することができました。

本当にありがとうございました。

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