一度入力不可にしたフィールドが入力可に戻らない。

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

 

「サブテーブル内のドロップダウンの選択により、

サブテーブル内の別のフィールドを入力不可にする」

という動きを作るため、色々調べて何とか入力不可にするまではたどり着いたのですが、

一度選択すると入力不可のままで入力可能に戻らない状態です。

色々記述を変えてみたりしているのですが解決できずにおります。

(function() {
"use strict";
// レコード新規追加、編集画面にて実行される。
var events = ['app.record.create.change.payment',
      'app.record.edit.change.payment'];

//支払方法でFB振込が選択されたら支払先(他)が非活性
//支払方法でFB振込以外が選択されたらFBが非活性

kintone.events.on(events, function(event){
var row = event.changes.row.value;

//振込を選択した場合「その他」を入力不可
//現金を選択した場合「振込」を入力不可
if(row.payment.value === '振込') {
row.other.disabled = true;
}else if(row.payment.value === '現金') {
row.fb.disabled = true;
}
return event;
});

})();

 

JavaScript初心者のため、恐らく間違いだらけだとは思うのですが…

ご教示のほどよろしくお願いいたします。

 

disabled = false で入力可になるのでその記述が必要ですね!

(function() {

"use strict";

// レコード新規追加、編集画面にて実行される。

var events = [

"app.record.create.change.payment",

"app.record.edit.change.payment"

];

//支払方法でFB振込が選択されたら支払先(他)が非活性

//支払方法でFB振込以外が選択されたらFBが非活性

kintone.events.on(events, function(event) {

var row = event.changes.row.value;

//振込を選択した場合「その他」を入力不可

//現金を選択した場合「振込」を入力不可

if (row.payment.value === "振込") {

row.other.disabled = true;

row.fb.disabled = false;

} else if (row.payment.value === "現金") {

ow.other.disabled = false;

row.fb.disabled = true;

}

return event;

});

})();

TK様

ご教示いただきありがとうございます!!!

試したところ、何とか入力可能に戻ったのですが、「FB」フィールドだけ入力可能に戻りません…

(function(){
"use strict";

//レコードの追加、編集、詳細画面で適用する
var events = ['app.record.detail.show',
'app.record.create.show',
'app.record.create.change.payment',
'app.record.edit.show',
'app.record.edit.change.payment'];

//支払方法で振込が選択されたら支払先(他)が非活性
//支払方法で振込以外が選択されたらFBが非活性

kintone.events.on(events, function(event) {
var row = event.changes.row.value;

//振込を選択した場合「その他」を入力不可
//現金を選択した場合「振込」を入力不可
if (row.payment.value === '振込'){
row.fb.disabled = false;
row.other.disabled = true;
} else if (row.payment.value === '現金','小口現金','内部振替','銀行振込','郵便振替') {
row.other.disabled = false;
row.fb.disabled = true;
}

return event;

});

})();

ただ、未選択「-----」の場合はどちらも入力不可という動作に変更したいなと考えております!!

その場合はifの条件がどのようになるか教えていただけますでしょうか。

ちなみに、テーブル内のフィールドは

record['フィールド名']['value'] = [];//←非表示の時にvalueを空にする

これで値を空にできたのですが、テーブル内のフィールドだと記述が違いますか?

質問ばかりですみません…

何卒よろしくお願いいたします!!

>試したところ、何とか入力可能に戻ったのですが、「FB」フィールドだけ入力可能に戻りません…

コンソールにエラーなどが出ていますか?

 

>ただ、未選択「-----」の場合はどちらも入力不可という動作に変更したいなと考えております!!

>その場合はifの条件がどのようになるか教えていただけますでしょうか。

条件が多くなる場合はswitch文の方がコードの見通しがいいと思います。

下記の画像のような動作を想定しています。

(function() {
"use strict";
kintone.events.on(["app.record.create.change.payment", "app.record.edit.change.payment",
"app.record.create.change.Table", "app.record.edit.change.Table",
"app.record.create.show", "app.record.edit.show"], function(event) {
const record = event.record;

if(event.type === "app.record.create.change.payment" || event.type === "app.record.edit.change.payment") {
const row = event.changes.row.value;
switch(row.payment.value) {
case "振込":
row.fb.disabled = true;
row.other.disabled = false;
break;
case "現金":
case '小口現金':
row.fb.disabled = false;
row.other.disabled = true;
break;
default:
row.fb.disabled = true;
row.other.disabled = true;
break;
}
}

if(event.type === "app.record.create.show" || event.type === "app.record.create.change.Table" ||
event.type === "app.record.edit.show" || event.type === "app.record.edit.change.Table") {
record.Table.value.forEach(function(val) {
switch(val.value.payment.value) {
case "振込":
val.value.fb.disabled = true;
val.value.other.disabled = false;
break;
case "現金":
case '小口現金':
val.value.fb.disabled = false;
val.value.other.disabled = true;
break;
default:
val.value.fb.disabled = true;
val.value.other.disabled = true;
break;
}
});
}
return event;
});
})();

 

record['フィールド名']['value'] = [];//←非表示の時にvalueを空にする

>これで値を空にできたのですが、テーブル内のフィールドだと記述が違いますか?

サブテーブルは行ごとに配列になってるので記述は変わります。

event.record['テーブル名'].value[0].value['フィールド名'].value = ''; // サブテーブルの1行目

event.record['テーブル名'].value[1].value['フィールド名'].value = ''; // サブテーブルの2行目

文字列一行を空にする場合は  = ’ ';でいけますが、

チェックボックスを空にする場合は = []; になるので、

フィールド形式などを参考にやってみてください。

TK 様

 

コンソールのエラーは確認できなかったのですが、

ご教示いただいたコードで何とか望み通りの動きを実装することが出来ました!!

 

「入力不可にした場合値を空にする」という動きはまだ実現できていないので、

勉強しながら頑張ってみます。。

 

お忙しい中、誠にありがとうございました!

 

 

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