「出発距離」と「到着距離」という数字フィールドがあり、「到着距離」から「出発距離」を引いた値を数字フィールドの「移動距離」に入れています。このとき、「移動距離」が0以下のときはエラーを表示させたいので、JavaScriptを作成したのですが、機能しません。
ちなみに、「移動距離」を「到着距離」に変更すると、正常に機能しますので、「移動距離」が無効になっているように思えます。
(function() {
"use strict";
kintone.events.on(['app.record.edit.change.到着距離'], (event) => {
var record = event.record;
var PG_kyori = record['移動距離']['value'];
if (PG_kyori <= 0 ) {
record['移動距離'].error = '入力エラー';
} else {
// event.error = null;
record['移動距離'].error = 'OK';
}
return event;
});
})();
hirofu 様
こちらの
varPG_kyori = record['移動距離']['value'];
を
varPG_kyori = Number(record['移動距離']['value']);
に変えてみるとどうでしょうか?
恐らく現状ですと、文字列型で値を取得されてるかと思われます。
「ちなみに、「移動距離」を「到着距離」に変更すると、正常に機能しますので、「移動距離」が無効になっているように思えます。」
の意味がエラーの表示させたい場所のことをいっていたのですね。
計算フィールドにはエラー表示を出せないみたいですね。
レコード追加イベント – cybozu developer network
https://developer.cybozu.io/hc/ja/articles/201941984#step6
以下のフィールドは、エラー値を設定しても、フィールドにエラーは表示されません。
計算フィールドにはエラー表示できないのですね。
ご指摘ありがとうございました。
数字フィールドだと書かれてあったので、数値フィールドに何かしらで計算させているのだろうと考えておりました。
移動距離フィールドを数値フィールドか文字列一行フィールドに変えていただいて、以下のようなコードで書くとできるのではないかと思われます。
(function() {
"use strict";
kintone.events.on(['app.record.edit.change.到着距離'], (event) => {
var record = event.record;
if(!record.出発距離.value)return;
record.移動距離.value = Number(record.到着距離.value) - Number(record.出発距離.value);
var PG_kyori = Number(record.移動距離.value);
if (PG_kyori <= 0 ) {
record.移動距離.error = '入力エラー';
} else {
// event.error = null;
record.移動距離.error = 'OK';
}
return event;
});
kintone.events.on(['app.record.edit.change.出発距離'], (event) => {
var record = event.record;
if(!record.到着距離.value)return;
record.移動距離.value = Number(record.到着距離.value) - Number(record.出発距離.value);
var PG_kyori = Number(record.移動距離.value);
if (PG_kyori <= 0 ) {
record.移動距離.error = '入力エラー';
} else {
// event.error = null;
record.移動距離.error = 'OK';
}
return event;
});
})();
Yuki Minamitaniさん、ありがとうございます。
私は引き算ではなく、大小比較で実装しました
(function() {
"use strict";
kintone.events.on(['app.record.edit.change.到着距離'], (event) => {
var record = event.record;
var PG_start = Number(record['出発距離']['value']);
var PG_end = Number(record['到着距離']['value']);
if (PG_end <= PG_start ) {
record['到着距離'].error = '入力エラー';
} else {
record['到着距離'].error = null;
}
return event;
});
})();
なるほど、そちらの方が現状のフィールドに変更加えなくてもよさそうですね。
出発距離フィールドに対してのChangeイベントも作成された方がいいかなと感じました。
system
(system)
クローズされました:
10
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。