チェックボックスで、チェック時に文字列の表示について

カスタマーサポートよりご紹介をして頂き、初めてご質問をさせて頂きます。
現在、チェックボックスでチェック時に、文字列を表示させたいのですが、
どうしてもうまくいかない状態です。(以前に似たご質問も確認済です)
具体的には、チェックボックスの設定で「項目と順番」に情報、労務、発行、
その他を設定しており、その他にチェックをした時に備考欄の文字列を
表示させたいのです。

以下は情報です。

■チェックボックスの設定
フィールド名 :発注担当
項目と順番 :情報、労務、発行、その他
フィールドコード:chk1

■文字列(1行)の設定
フィールド名:備考欄
フィールドコード:biko

また、以下はうまく機能しないコードです。

(function () {
“use strict”;

var events = [
‘app.record.create.show’,
‘app.record.edit.show’,
‘app.record.create.change.発注担当 ’,
‘app.record.edit.change.発注担当 ’];

kintone.events.on(events, function(event) {
var record = event.record;
var chk1 = record[‘その他’][‘value’];

if (chk1.length) {
kintone.app.record.setFieldShown(‘備考欄’, true);
} else {
kintone.app.record.setFieldShown(‘備考欄’, false);
}

return event;
});
})();

以上ですが、どこに問題があるのかご教示をお願いできないでしょうか?
よろしくお願いいたします。

こんにちは。

change イベント含め、カスタマイズを行う際には、
フィールド名ではなく、フィールドコードを指定する必要があります。

記載していただいたコードでは、各処理でフィールド名が記載されているため、
処理が機能しないかと思います。

各処理に記載しているフィールド名を、フィールドコードに修正することで、
処理が動作するか確認してみてください。

ko_ji様

お返事ありがとうございます。
ko_ji様がおっしゃる通りに下記のようにフィールドコードに変更を
行ないましたが、備考欄の「文字列(1行)」が表示されます。

(function () {
“use strict”;

var events = [
‘app.record.create.show’,
‘app.record.edit.show’,
‘app.record.create.change.chk1 ’,
‘app.record.edit.change.chk1 ’];

kintone.events.on(events, function(event) {
var record = event.record;
var chk1 = record[‘その他’][‘value’];

if (chk1.length) {
kintone.app.record.setFieldShown(‘biko’, true);
} else {
kintone.app.record.setFieldShown(‘biko’, false);
}

return event;
});
})();

他に考えられる原因はございませんでしょうか?
誠に恐縮ではございますが、よろしくお願いいたします。

追記

言葉足らずで申し訳ございません。
「その他」にチェックをしていない状態で、備考欄が表示される
という意味です。

var chk1 = record[‘その他’][‘value’]; についても、
‘その他’ を chk1 に修正する必要があるかと思います。

また、chk1 の値が「その他」であるか判定してい場合、if (chk1.length) の処理を、
if(chk1 == ‘その他’) に修正する必要があるかと思います。

上記内容を修正して、動作確認してみてくださいー

ko_ji様

お返事ありがとうございます。
ご指摘を頂いた2か所について、修正を行いました。

(function () {
“use strict”;

var events = [
‘app.record.create.show’,
‘app.record.edit.show’,
‘app.record.create.change.chk1 ’,
‘app.record.edit.change.chk1 ’];

kintone.events.on(events, function(event) {
var record = event.record;
var chk1 = record[‘chk1’][‘value’];

if(chk1 == ‘その他’) {
kintone.app.record.setFieldShown(‘biko’, true);
} else {
kintone.app.record.setFieldShown(‘biko’, false);
}

return event;
});
})();

しかし、その他のチェックをしていないにも関わらず「備考欄」が
表示される状態です。
再度、ご教示をお願いできないでしょうか?
よろしくお願いいたします。

ぱっと見で気が付かなかったのですが、「“」や「'」が全角になってました。
「”」や「'」については半角で入力する必要があるので気を付けてください。

手元で以下のように修正したところ動作しているよう見えるので、
確認してもらえればと思います。

(function () {
"use strict";

var events = [
"app.record.create.show",
"app.record.edit.show",
"app.record.create.change.chk1",
"app.record.edit.change.chk1"];

kintone.events.on(events, function(event) {
var record = event.record;
var chk1 = record["chk1"]["value"];

if(chk1 == "その他") {
kintone.app.record.setFieldShown("biko", true);
} else {
kintone.app.record.setFieldShown("biko", false);
}

return event;
});
})();

なお、コミュニティでコードを記載する際のお作法や、
カスタマイズのデバック方法は以下のページで説明があるので、
今後のために確認しておくといいかもです。

https://community.cybozu.dev/guidelines

ko_ji様

何度もご教示して頂きありがとうございます。
「その他」をチェックすると、「備考欄」が表示する仕様になりました。
感謝でいっぱいです。
今後は、全角/半角をはじめとしたコードを記載する際のお作法をきちんと
確認してご質問をさせて頂きます。
ありがとうございました。

1 Like