・テーブルを使用してます
・テーブルの中の入力項目の1つの入力内容によってアラートが出るようにしたいです
・そのひとつの入力内容は、選択肢が複数あり、その中の特定の3つを選択したらアラートが出るようにしたいです。
・選択は複数選択が可能です。
・申請した瞬間にアラートがなるのではなく(要は申請者にはアラートが出ない)、それを処理する人(ステータスを着手中に変更する人)のときにアラート表示させたい。
現在、一つだけ選択した場合は、アラートが出るべき選択肢のときにきちんとアラートが出ます。
ただし、アラート必要なものとアラート不要なものを2つ同時選択した場合、アラートが出ません・・・。
配列 というものがかかわってるのだろう・・・ということは推測できるのですが、
よくわからず・・・
教えていただけますと幸いです・・・。
*******
kintone.events.on( [‘app.record.detail.show’,
‘mobile.app.record.detail.show’,
‘app.record.detail.process.proceed’,
‘app.record.create.change.申請内容’,
‘app.record.edit.change.申請内容’ ],
function(event) {
var tableRecords = event.record.申請内容.value;
if (event.nextStatus.value == “着手中”) {
for (var i = 0; i < tableRecords.length; i++) {
if((tableRecords[i].value[‘種類’].value == ‘サンプル1’)||(tableRecords[i].value[‘種類’].value == ‘サンプル2’)||(tableRecords[i].value[‘種類’].value == ‘サンプル3’)){
window.alert(‘この内容がアラート表示される’);
}
}
return event;
}});
if (
tableRecords[i].value['種類']['サンプル1'] ||
tableRecords[i].value['種類'].value == 'サンプル2' ||
tableRecords[i].value['種類'].value == 'サンプル3'
) {
window.alert('この内容がアラート表示される');
}
にelseでifがtrueにならなかったときの種類の中身を表示するよう追記して、複数選択して実行してみてください。もしくは、デバッガーでブレイクポイントを入れてみてください。
複数選択した場合の対応になっていないと思います。
//ユーザーが選択したものの配列
const choices = ['サンプル1', 'サンプル2', 'サンプル5'];
//選択してはいけないものの配列
const badchoices = ['サンプル2', 'サンプル3', 'サンプル4'];
//A案
const result = choices.filter((choice) => badchoices.includes(choice));
console.log(result.length);
//B案
const isNotGood = (element) => badchoices.includes(element);
console.log(choices.some(isNotGood));
371966959511様 コメントありがとうございます!
書いてみたのですがうまくいかず・・・
テーブルレコード内の選択なので通常の配列選択だと動作しないのでしょうか・・・
(function () {
'use strict';
kintone.events.on('app.record.detail.show', function (event) {
const tableRecords = event.record.申請内容.value;
for (let i = 0; i < tableRecords.length; i++) {
if (
tableRecords[i].value['種類'].value == 'sample1' ||
tableRecords[i].value['種類'].value == 'sample2' ||
tableRecords[i].value['種類'].value == 'サンプル3'
) {
window.alert('この内容がアラート表示される');
} else {
console.log(tableRecords[i].value['種類'].value);
}
}
return event;
});
})();
として実行すると
[‘sample1’, ‘sample3’]
と表示されました。テーブルレコード内の複数選択なので通常の配列選択とは違うのか?という点は違わないと思われます。
371966959511様 何度もありがとうございます!
わたしの説明が分かりにくくてすみません
選択肢が全部で11個あります。
そのうちの特定の3つを選択したら(仮にAとBとCとします)、アラートがなるようにしたいです。
AorBorCのどれかひとつ選択した場合 ⇛ アラート発動
AorBorCのどれかひとつ&その他(仮にDとEとFとGとHとIとJとKとします)を同時選択した場合 → アラートが発動したい。※でも現状アラート発動しない。
※AとD、BとEなどの組み合わせ
else {} の中にすべての選択パターンをいれる方法になってしまいますか・・・?
状況がわかりました。
elseのなかに入れていく形なりますね。
念のため確認です。たとえば、A or B or Cがない場合でDのみを選択された場合はどうなりますか?
371966959511様
Dのみの場合は、アラートは無しにしたいです!
ちなみにA+Bの二つ選択した場合はアラート発動したいです。
※ようはAとBとCのどれか1つでも組み合わせの中に入ってたらアラート発動
AとBとCがひとつも選ばれてなかったら、アラート無し
え、
https://developer.cybozu.io/hc/ja/community/posts/7327964622361/comments/7460609662105
「AorBorCのどれかひとつ&その他(仮にDとEとFとGとHとIとJとKとします)を同時選択した場合 → アラートが発動しません」
「※ようはAとBとCのどれか1つでも組み合わせの中に入ってたらアラート発動」
の内容と矛盾しませんか?
371966959511様
自分でわかりにくくしてしまってました・・・・。
①AorBorCのどれかひとつ選択した場合 ⇛ アラート発動します
②AorBorCのどれかひとつ&その他(仮にDとEとFとGとHとIとJとKとします)を同時選択した場合→ アラート発動「したい」※でも現状アラート発動しない。
③その他(仮にDとEとFとGとHとIとJとKとします)のみ →アラート発動しない。
④AorBorCの中で複数選択した場合 → アラート発動「したい」※でも現状アラート発動しない。
※↑のコメントも修正しました。
完全に理解できていないのですが、選択にA、B、Cが含まれていたらアラートを表示するようにしました(そのように理解しました)。
badchoicesの中身を書き換えてください。
(function () {
'use strict';
kintone.events.on('app.record.detail.show', function (event) {
const tableRecords = event.record.申請内容.value;
const badchoices = ['sample1', 'sample2', 'sample3'];
for (const row of tableRecords) {
const choices = row.value['種類'].value;
const result = choices.filter((choice) => badchoices.includes(choice));
if (result.length) {
window.alert('この内容がアラート表示される');
}
}
return event;
});
})();
system
(system)
クローズされました:
12
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。