サブテーブルの文字列フィールドに半角スペースまたは全角スペースがある場合エラーにしたい
試したソースコード
(() => {
'use strict';
kintone.events.on(['app.record.create.submit','app.record.edit.submit'],function(event){
const record = event.record;
for (let i = 0; i < record['サブテーブルのフィールドコード'].value.length; i++) {
if (record['サブテーブルのフィールドコード'].value[i].value['サブテーブル内の文字列フィールドのコード'].value.includes(" ") || record['サブテーブルのフィールドコード'].value[i].value['サブテーブル内の文字列フィールドのコード'].value.includes(" ") ) {
record['サブテーブルのフィールドコード'].value[i].value['サブテーブル内の文字列フィールドのコード'].error = '不要なスペースが入っています。';
event.error = '基本セットIDに不要なスペースが入っているのでご確認ください。';
}
}
return event;
});
})()
エラー情報
サブテーブル内に入力がある場合は問題なく動き、半角スペース、全角スペースがある場合アラートが出るのですが、サブテーブルに何も情報がない場合に保存ができないというエラーが出ます。
googleのデベロッパーツールでエラー内容を確認したところ以下でした。
TypeError: Cannot read properties of undefined (reading 'includes')
原因が分かる方がおりましたら教えていただけると幸いです。
3件のコメント
文字列フィールドは空白の場合、値がundefined(未定義値:それ以上のプロパティを持たないもの)になります。それに対してincludes(文字や配列に対して、対象のプロパティにアクセスして実行)を行っているためエラーになっています。
includesを実行する前に
と、value(値)があるかどうかの判定を行うのが必要です。
mis-hashimoto
うわー!なるほど!
すごく納得できました!
早速ためしてみます!
ありがとうございます!
mis-hashimoto
こちら無事に解決しました!
ずっと悩んでいたので、とても勉強になるとともに助けられました。
ありがとうございました!