お世話になります。
KintoneアプリのJavascriptにてアプリのカスタマイズを行っているのですが、処理が上手くいかないのでご質問させて頂きたいと思います。
アプリのラジオボタン(6項目)のある値が選択されたとき、同アプリ内のチェックボックス(なにも選択されていない状態)にチェックを入れさせたいのですが、上手くいかない状態です。
Kintoneチェックボックスは配列の構造を取っているということなので、配列の長さを取り、値の代入を行っているのですがチェックボックスにチェックを付けさせる場合は別の処理が必要なのでしょうか。
ご教授お願い致します。
ソースコードを記載していませんでした、申し訳ありません。
if (record[‘チェックボックス’][‘value’].length === 0) {
alert(“チェックボックスを有効にします”)
record.[‘チェックボックス’][‘value’].length = 1;
var cb_add_array = [‘連携項目’];
record[‘チェックボックス’][‘value’] = cb_add_array;
}
齋藤 亮輔 さん
上記コードはおそらくラジオボタンフィールドの change イベント内の処理の一部かと思いますが、
最後に return event; はしていますか?
チェックボックスフィールドに値を入れる処理としては問題なさそうに見えるので、
値が反映されないとすると、return event; の記述漏れが疑わしく感じられます。
※ちなみに以下の一行は不要かと思います。
record.['チェックボックス']['value'].length = 1;
Legacy_Account486
(cybozu developer network team(Legacy Account))
4
齋藤 亮輔 様
次のように書くと、ちゃんと値が入れると思います。
1.チェックボックスに選択させたい項目は一つしかない場合
if (record[‘radio’][‘value’] === ‘ある’) {
record[‘checkbox’][‘value’][0] = ‘連携項目’;
}
だけでいいと思います。
2.複数選択させたい場合
if (record[‘radio’][‘value’] === ‘ある’) {
//チェックボックスに何もチェックされていない状態で
var valueArray = [‘A’,‘B’];
for (i=0; i< valueArray.length;i++){
record[‘checkbox’][‘value’][i] = valueArray[i];
}
}
change イベント内の処理になります、説明不足で申し訳ありません。
また、return event; で値を返すのを意識していませんでしたので、
今後のコーディングの際、見直しの観点としてみます。
ソースコードを以下の様にして動かしました、
if (record['チェックボックス']['value'].length === 0) {
alert("チェックボックスを有効にします")
var cb_add_array = ['連携項目'];
record['チェックボックス']['value'] = cb_add_array;
return event;
}
エラーとして次のものがかえって来ました。
event.record['チェックボックス'].value が不正です。
途中送信してしまい申し訳ありません。
配列が動かす際にどうなっているかデバッグして確認後、再度書き込みをしたいと思います。
Shinichi Suenaga 様、Qiuxiang Su 様
ありがとうございます。
各手法を試みました。
デバッグすると配列のlengthは1を取り、Array(0)に’連携項目’は
入ってきているのですがエラーとして
-
- event.record[‘NONRELATEFLG’].value が不正です。
が返ってきました。
値は入ってきていましたので、別の制御すべき項目が無いかチェックボックスに
関するフォーラムの記事等を再度確認してみます。
Shinichi Suenaga 様
Qiuxiang Su 様
解決致しましたので、ご報告します。
エラーが出ていた原因としては、'連携項目’の部分がチェックボックスで指定されているもの以外の文字列を入れていた
というものでした。
配列に入れるための’連携項目’で指定している文字列は、フォームで配置したチェックボックス内にある
文字列をコピーし、それを配列に入れ込んでいたのですが上手くいっていなかったという状況でした。
Chromeのデバッグにてチェックを入れているときに、チェックボックスの配列に入ってきた文字列をコピーした場合だと
通りました。
大変ご迷惑をお掛けしました。