フォームブリッジで、確認画面移行前にアラートを出したいです。
日付フィールドの値が、
回答時間が午前中なら、明後日以降が選択可能で、
回答時間が午後なら、3日後以降を選択可能にしたいです。
上記条件に一致しなかった場合にアラートを出したいです。
また、可能であれば
水曜日は選択不可(選択した場合はアラート)にして、水曜日は日数のカウントから除きたいです。
例:月曜の午後に回答したら、金曜日以降が選択可能
木曜の午後に回答したら、日曜日以降が選択可能
このような設定はできますでしょうか?
Oさん
お世話になっております。
JavaScriptカスタマイズにて、実装可能です。
https://form.kintoneapp.com/help/customize
フォームから確認画面に移動する前に「fb.events.form.confirm イベント」が発生するので、こちらを利用するとよいかと思います。
入力した値は、イベントの例のコードのように、stateオブジェクトのrecordプロパティから取得できます。
日付に関する実装を行う際は、Dateオブジェクトを使うか、dayjsなどのライブラリを使うと良いと思います。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date
https://github.com/iamkun/dayjs
アラートはalert()メソッドで実装できます。
https://developer.mozilla.org/ja/docs/Web/API/Window/alert
江田さん
ご回答ありがとうございます。実現できました。
追加で教えていただきたいのですが、
上記のアラートだと「OK」を押すと確認画面に進んでしまうため、
確認画面に進まないようにするカスタマイズをいれるか、
バリデーションでのエラーメッセージにすることを考えています。
前者のカスタマイズは可能でしょうか?
可能であればこちらの方法を教えていただきたいです。
難しい場合は、バリデーションで条件毎に別のメッセージを表示する方法を教えていただきたいです。
以下のサイトを参考に、1つの条件に引っ掛かった時に任意のメッセージを出すことはできましたが、
条件が複数あって、それに合わせたエラーメッセージを表示する方法がわかりませんでした。
フォームブリッジ上でのバリデーションについて
例 水曜日を選択してたら「水曜日は選択できません」
午前中の回答で明日以前を選択していたら「明後日以降を選択してください」
よろしくお願いいたします。
Oさん
お世話になっております。
たしかに、alertだけではページ遷移してしまいますね。
失礼いたしました。
フォームブリッジでは明示的にイベントキャンセルはできません。
https://developer.cybozu.io/hc/ja/community/posts/115020408023/comments/115005463003
バリデーションを設定するのが正攻法かと思います。
複数のルールを作成し、それらをpush()すればよいかと思います。
下記は複数ルールを設定する例になります。
fb.events.form.created.push(function(state) {
var fieldCode = 'number';
var field = state.fields.filter(function(field) {
return field.code === fieldCode;
})[0];
field.validations.push({rule: 'rule1'});
field.validations.push({rule: 'rule2'});
return state;
});
fb.addValidators = function() {
return {
rule1: {
getMessage: function() {
return '0より大きくしてください';
},
validate: function(value) {
return value > 0;
}
},
rule2: {
getMessage: function() {
return '5より小さくしてください';
},
validate: function(value) {
return value < 5;
}
},
}
}
江田様
お世話になっております。
実現できました。ありがとうございました。
上記コードを利用して、テーブル内の項目にも制限をつけたいのですが、
テーブル内項目はどのように指定したらよいでしょうか?
フィールドコードでの指定方法を教えていただけると幸いです。
よろしくお願いいたします。
system
(system)
クローズされました:
6
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。