新規投稿
フォローする

jsで作成したボタンに登録されたイベントハンドラから呼び出される関数でのフィールド設定。

フィールド設定(画面表示)が動作しません。情報をお持ちの方が居られましたら、ご教示をお願いします。
【jsでの状況】
1.スペースにボタンを配置、イベントハンドラを設定(addEventListener/attachEvent)
2.イベントに関連する関数(a)、さらにそこから呼び出される関数(b)を作成
3.関数(b)でフィールド設定を行う。
  event.record['num金額']['value'] = '555';
4.画面上に表示されず
【考察】
 一般的なフィールドの表示(書き換え)の前提として
 編集画面表示時など、kintoneの標準イベントでのみ、
 保証するように思えます。
【対策案】
1)表示したい内容をグローバル領域に待避
2)イベントを発行して('app.record.create.show'など)
3)'app.record.create.show'イベントにて
   フィールド設定(グローバル領域にステータスを格納して処理分岐)
   ※2)の方法が不明です。方法をご存じでしたら
        ご教示頂けますよう、お願い致します。

-1

2件のコメント

Avatar
斎藤 栄

佐藤健一様
ラジカルブリッジの斎藤です。

既に考察されています通り、(レコード追加・編集画面での)フィールド値の書き換えは、'app.record.create.show'などのkintone標準イベント内のみで動作するというのが基本です。

event.record['num金額']['value'] = '555';

という例は、標準イベントで得られる eventオブジェクトに対するフィールド操作ですので、自前のイベントハンドラでは残念ながら動作いたしません。

対策案もいろいろと苦労されているようですが、私も2)のやり方はわかりません。(というか、できるのかな?)

このようなケースでは、禁じ手のカスタマイズにはなりますが、kintoneのDOMを直接操作して値を格納するということが時折行われていますが、kintoneのバージョンアップによって動作しなくなる可能性があるのでおすすめしません。

もし佐藤様のやりたいことが

1.追加・編集画面で自前のボタンクリックでなんらかの計算をさせた結果を同じ追加・編集画面内にまずは表示する。

2.保存時に、その計算結果をnum金額フィールドに登録する。

というようなことでしたら、1.の段階では数値フィールドではなく、スペースフィールドに値を表示するだけというのはいかがでしょうか?

■スペースフィールドの要素を取得する
https://developers.cybozu.com/ja/kintone-api/apprec-readjsapi.html#i-5

上記ページにある通り、スペースフィールドの要素IDを取得して、DOM操作で文字列を表示させます。(これは禁じ手ではありません)

その後、'app.record.create.submit'などの保存実行前イベントで本来の数値フィールドに計算結果を格納して、そのまま保存させます。

参考になりますでしょうか?

0
Avatar
佐藤健一

ラジカルブリッジ 斎藤様
懇切丁寧なご説明、ありがとうございます。
大変参考になりました。
実現したいことは、予測されていらっしゃる通り、
 数値フィールドへの設定(計算結果)
 保存ボタンで、設定値を保存
のため、UIを実現するのは難しいと思いました。

0
ログインしてコメントを残してください。