チェックボックスによるdisabledの制御

 

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

チェックボックスにチェックが入った時に、文字列フィールドの活性化、非活性化を行うということを実装したいのですが、

AとD両方にチェックが入っているときのパターンのみ、

Aのみ活性化となりDは非活性化のままとなってしまってうまく動きません。

consolelog上にはAとD両方の値が入ってくるので、チェックボックスの配列の扱いで何かミスをしてしまっているのではないかと考えています。

アドバイス頂けますと幸いです。

(function($) {
“use strict”;
const check = [“app.record.create.show”,“app.record.edit.show”,
“app.record.create.change.チェックボックス”,“app.record.edit.change.チェックボックス”];

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

const record = event.record;

if( record.チェックボックス.value === “A” && record.チェックボックス.value [0] === “D” ){

record.Aを選択した場合.disabled = false;
record.Dを選択した場合.disabled = false;
console.log( “A,D両方” + record.チェックボックス.value);

} else if( record.チェックボックス.value [0] !== “A” && record.チェックボックス.value [0] !== “D” ){

record.Aを選択した場合.disabled = true;
record.Dを選択した場合.disabled = true;
console.log( “両方選択無し” + record.チェックボックス.value);

} else if( record.チェックボックス.value [0] === “A” && record.チェックボックス.value [0] !== “D” ){

record.Aを選択した場合.disabled = false;
record.Dを選択した場合.disabled = true;
console.log( “Aのみ” + record.チェックボックス.value);

} else if( record.チェックボックス.value [0] !== “A” && record.チェックボックス.value [0] === “D” ){

record.Aを選択した場合.disabled = true;
record.Dを選択した場合.disabled = false;
console.log( “Dのみ” + record.チェックボックス.value);

}

return event;

});
})(jQuery);

 

AとDにチェックが入っているときは[“A”,“D”]になるので、Dのインデックスは1になるのでそれが原因ですね。

indexOfで判定したほうがいいかもしれません!

if (record.チェックボックス.value.indexOf("A") !== -1 && record.チェックボックス.value.indexOf("D") !== -1)

 

TK様

お久しぶりです。前回に引き続いてアドバイスしていただきありがとうございます。

また、サンプルコードまで教えて頂きありがとうございます。

indexOfについては初見でしたので、サンプルコードを参考にさせて頂いた上で

自分で色々調べてみます!

暑い日が続いておりますので、体調を崩されないようご自愛ください。

この度はありがとうございました。