新規投稿
フォローする

数値フィールド連動によるチェックボックス変更について。Javascriptで数値が0または何もない場合の表現はどうしたらよいでしょうか?

お世話になります。

大変恐れ入りますが数値フィールドに対してチェックボックスが動くように下記のように

設定しました。

更にカスタマイズしたいのですが

数値フィールドに0または何も入らない場合→チェックボックスは未入力

それ以外は入力

というようにしたいです。

恐れ入りますが、お分かりになればご教授いただけますと幸いです。

 

(function() {
"use strict";

var events = [
//「売上6」の値変更
'app.record.create.change.売上6',
'app.record.edit.change.売上6',
'app.record.index.edit.change.売上6'
];

kintone.events.on(events, function(event) {
var record = event.record;

//売上6の値に何か入った場合
if (record['売上6']['value']) {
//チェックボックス「売上確認要2」を「入力」にする
record['チェックボックス'].value = ['入力'];

//それ以外の場合
} else {
//チェックボックス「未入力」にする
record['チェックボックス'].value = ['未入力'];
}
return event;
});
})();

0

10件のコメント

Avatar
江田篤史

Riorio様

お世話になっております.
トヨクモの江田と申します.

「売上6」を一切変更しなかった場合に,「チェックボックス」が「未入力」にならないことが問題でしょうか?
左様でしたら,eventsに'app.record.create.show'と'app.record.edit.show'を追加すると良いと思います.

0
Avatar
Riorio

江田篤史さま

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

ご連絡ありがとうございます。

チェックボックスの項目である、入力 未入力

売上6の値が0の時と空欄で何も入っていない時には

チェックボックスを

未入力

というようにしたいと思っております。

0、空欄以外は

入力

を選択したいです。

如何でしょうか?

0
Avatar
江田篤史

Riorio様

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

0のとき未入力にならないということですね.
確認不足でした.

下記で,0も未入力になるかと思います.

if (Number(record['売上6']['value'])) {
0
Avatar
Riorio

江田篤史さま

お世話になります。

この通りでございます。助かりました。本当にありがとうございます。

valueに対して=0や””などで対応できるかと思ったらそうはいかず

苦労していたのですが

なぜ

Numberで0、空欄

が判断できるのでしょうか?

0
Avatar
江田篤史

Riorio様

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

ややこしい話ですが,kintoneのレコードの数値フィールドのvalueは,数値型ではなく文字列型として格納されています.
そのため,「0」が入力された場合は,数値型の0ではなく文字列型の'0'となります.

文字列型の'0'はfalse扱いされないので,数値型の0に直す必要があります.
https://qiita.com/katsuo5/items/ffb8b83c6b8a6dcbd9d6

1
Avatar
Riorio

江田篤史さま

お世話になります。

ありがとうございます。

そういう背景があったのですね。

緊急で応用していきたい部分がこのjsにはあったので本当に助かりました。

ありがとうございます。

1
Avatar
Riorio

江田篤史さま

お世話になります。

昨日からかなり発展することが出来まして、多くのフィールドにも搭載ができました。ありがとうございます。

同じパターンで売上6のフィールドがテーブル内にあった場合(テーブルフィールドコードはテーブル)、

ifにテーブル情報付けくわえた抜粋なんですがうまくいかず。consoleはvar record = rec.record;がエラーになります。

1行目の売上6、②行目の売上6、3行目・・・それぞれ別のチェックボックスに反映させたい(チェックボックス1,2,3・・・)のでjsは1行目用だけできていれば、2行目以降は別で持たせれば良いかと思っております。

恐れ入りますが、ご教授いただくことは可能でしょうか?

宜しくお願い致します。

kintone.events.on(events, function(event) {
var record = rec.record;
//売上の値に何か入った場合
if (record['テーブル'].value[0].value.Number(record['売上']['value'])) {
//チェックボックス「売上確認」を「入力」にする
record['チェックボックス'].value = ['入力'];

//それ以外の場合
} else {
//チェックボックス「未入力」にする
record['チェックボックス'].value = ['未入力'];
}
return event;

0
Avatar
江田篤史

Riorio様

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

recが未定義のため,エラーが出ているのかと思います.
今回の場合でしたら,eventオブジェクトからrecordを取得すれば良いと思います.

var record = event.record;

 

また,ifの()の中身もエラーになるかと思います.

if (record['テーブル'].value[0].value.Number(record['売上']['value'])) {

if (Number(record['テーブル'].value[0].value['売上']['value'])) {
1
Avatar
Riorio

江田篤史さま

お世話になります。

ご連絡ありがとうございます。

確かに、未定義でした。恐れ入ります。

eventから引っ張って、Numberのところも修正したところ

完璧になりました。

ありがとうございます!!

 

1
Avatar
Riorio

江田篤史さま

お世話になります。

1行目に関して、複数の繁栄をもたらすことができました。

ありがとうございます。

if (Number(record['テーブル'].value[0].value['売上']['value'])) {

ですが

テーブル2行目は

if (Number(record['テーブル'].value[0+1].value['売上']['value'])) {

というようにはいかなさそうですが

調べていると行のidを取得する必要があるのかとも思っております。

恐れ入りますが

2行目の場合の例を教えていただくことは可能でしょうか?

追伸

ただいま、動きを見ていたところ

既存のレコードでif (Number(record['テーブル'].value[1].value['売上']['value'])) {実施したところ動きまして、

新規でレコード登録時に2行目を追加して動作確認するとだめです。

ということは行のIDが新規は発生していないからということで

エラーのつじつまが合いそうな気がします。

この対処法をご存じであればご教授いただけますと幸いです。

既存のレコードを一括更新プラグインで更新試したのですが

チェックボックスへの反応はないので上記が出来るとありがたいのですが。。。

何卒、宜しくお願い致します。

 

Riorioにより編集されました
0
サインインしてコメントを残してください。