新規投稿
フォローする

テーブル内の日付を比較

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

サブテーブル内に日付フィールドを二つ、フィールド名が申請日(フィールドコード 日付)とフィールド名が支払日(フィールドコード 支払日)を設置しております。

 

(やりたいこと)

両フィールドに日付が入力された時に、申請日と支払日を比較し、申請日より支払日が小さかった場合にエラーを表示させるようにしたいと考えております。

例 申請日11/29 支払日11/28→エラー表示

  申請日11/29 支払日11/29→そのまま

  申請日11/29 支払日11/30→そのまま

 

(状況)

支払日を選択すると、コードの13行目にて Cannot read properties of undefined (reading 'value') とエラーが出ている。

保存ボタンを押しても保存されず Cannot read properties of undefined (reading 'value') show.js.126 とエラーがでる。キャンセルは正常に動作しております。

該当コードを削除するとエラー無く動作しております。

他にJSを使用しているのですが特にエラーには影響しておりません。

 

ご教示して頂けますと幸いです。

(function() {
  'use strict';
  var field1 = '日付'; //申請日フィールドのフィールドコード
  var field2 = '支払日'; //支払日フィールドのフィールドコード
  kintone.events.on([
    'app.record.create.change.' + field1,
    'app.record.create.change.' + field2,
    'app.record.create.submit',
    'app.record.edit.change.' + field1,
    'app.record.edit.change.' + field2,
    'app.record.edit.submit',
  ], function(event) {
    if(!event.record[field1].value || !event.record[field2].value) return;  //保存できないエラー value
    event.record[field2].error = (event.record[field1].value > event.record[field2].value) ? '支払日は申請日以降でなければいけません.' : null;
    return event;
  });
})();

 

 

 

1

5件のコメント

Avatar
harada

こちらで試した限りでは意図通りに動いているように見えます。

本当に他のJavaScriptカスタマイズが影響しないのか、新しいアプリで2つのフィールドを作ってカスタマイズをためしてみてもらえませんか?

または、コンソールでエラーが出ている部分で行数がリンクになっていてエラーになっている箇所がわかりませんか?

haradaにより編集されました
2
Avatar
nekoko

harada

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

 

動作の確認して頂きありがとうございます。

harada様の方では正常に動いたとなるとこちら側で何かしら問題が起きているということで間違いないのでしょうか。

 

新しいアプリを作成し、本件のJSのみを読み込んだ状態でコンソールを確認したところ、下記エラーが出ました。

また、動作不良は変わらずに保存が押せない状態です。

(エラー)

Cannot read properties of undefined (reading 'value')

(リンク先のエラー箇所)

{throw a;

 

 

こちらが既存アプリのエラーのリンク先になります。

throw a;},0)},Ej=function(a,b){Bj||uba();Cj||(Bj(),Cj=!0);Dj.add(a,b)},uba=function(){if(n.Promise&&n.Promise.resolve){var a=n.Promise.resolve(void 0);Bj=function(){a.then(Fj)}}else Bj=function(){var b=Fj;

 

 

nekokoにより編集されました
0
Avatar
harada

こちらで、

  var field1 = '日付'; //申請日フィールドのフィールドコード
  var field2 = '支払日'; //支払日フィールドのフィールドコード

を故意に一致させないように変更しないようにしたら似たエラーがでました。

新しいアプリをつくっているので2回も不一致になっているとも思いにくいのですが

  ], function(event) {
    if(!event.record[field1].value || !event.record[field2].value) return; 

  ], function(event) {
  console.log(event.record[field1].value)
    if(!event.record[field1].value || !event.record[field2].value) return;

としたら console.log()の場所で止まるようならフィールドコードとカスタマイズがあっていないように思います。

0
Avatar
harada

すみません。

サブテーブル内の話だったのですね。

event.record[field1].value

はサブテーブル以外の普通のフィールドのデータの取り方でした。

サブテーブルのデータの取り方を参照してください。

2
Avatar
nekoko

harada

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

返信遅くなり申し訳ございません。

 

他のアプリでサブテーブルのデータを使用しているJSがあり、row.value[フィールドコード].value を使用していた為、こちらを入力してみたのですが、反映されませんでした。

サブテーブルのデータの取り方を調べてコードを修正していこうと思います。

 

丁寧に質問に答えて頂きありがとうございます。

本件にてわからないことが出てきましたらこちらで質問させて頂きます。

1
サインインしてコメントを残してください。