[Javascript API]ルックアップフィールドの「クリア」機能の実装の提案と、現時点での対策について
https://developer.cybozu.io/hc/ja/community/posts/201394394
上記の日付が2014/08/22なのですが、そこから仕様の変更などはありましたでしょうか?
javascriptからの「クリア」機能の実装がしたか確認したいです。
また、この方の回避策を参考に下記を試しましたが、エラーが消えないままです。
アドバイスを頂きたいです。よろしくお願いします!
var INPUT_TEXT = ‘input_氏名’; //ルックアップのフィールド名
var vBOTTON = ‘botton_r_space’; //スペースのフィールド名
var velSpace = kintone.app.record.getSpaceElement(vBOTTON);
var velButton = document.createElement(‘button’);
velButton.textContent = ‘ルックアップクリア’;
velSpace.appendChild(velButton);
velSpace.addEventListener(‘click’, function() {
var recordData = kintone.app.record.get();
var rec = recordData.record;
rec[INPUT_TEXT].value = “”;
rec[INPUT_TEXT][‘lookup’] = true;
kintone.app.record.set(recordData);
//return event;
});
(ルックアップ先のアプリに氏名に空白データで保存ずみ。)
kajita さん
ルックアップのクリアに関しては、変わっていないと思います。
エラーの内容がありませんが、記述された方がアドバイスしやすいと思います。
今回の処理では、「ルックアップの取得を自動で行う」は使えません。
rec[INPUT_TEXT][‘lookup’] = true;
これは、追加・編集イベント処理内のみで有効だと思います。
ボタンクリックで同様のことを行うには、JavaScript でルックアップ取得ボタンをクリックして、
ルックアップ取得するしかないと思います。
rex0220 さん
返答ありがとうございます。
ルックアップのクリアは変わってないんですね。。。
追加・編集イベント処理内でのプラグインです。
エラーは下記のように表示されています。
画面上部に「エラー」
ルックアップ(画像の氏名ルックアップ)の下部に下記の1文です。
値を削除する場合は、[クリア]を押し、参照先から取得した値をクリアしてください。
下記画像の「追加ボタン」を押して、
「氏名」、「商品」、「雇用」、「合計金額」がテーブルに追加され、入力していたものを削除する。
その際に、ルックアップ内のテキストボックスのテキストは消えているのですが、そのまま「保存」を押すとエラーがでます。
色々試してて、上のソースとは少し違ってしまっているのですが、
下記は「追加ボタン」のクリックイベントです。
var recordData = kintone.app.record.get();
var rec = recordData.record;
rec[‘lookup_氏名’].value = “”;
document.getElementsByClassName(“input-lookup-gaia”)[1].click();
//document.getElementsByClassName(“input-clear-gaia”)[1].click();
//クリアでもエラー内容に変わりなしでした。
kintone.app.record.set(recordData);
ご教授頂きたいです。よろしくお願いします!
いくつか試してみました。
クリアボタンは、なぜか click() を実行しても無視されます。
取得ボタンは、click() 出来ます。
ルックアップキーに、空欄・空白を入れて取得ボタンをクリックしても、選択ダイアログが表示されます。
選択ダイアログで、空欄・空白を選択するとクリアされます。
残念ながら、選択ダイアログを表示させずにクリアする方法はなさそうです。
とりあえず、簡単にできる代案としては、 何らかのキー(例:x)を持ったマスターデータを用意して、コピー項目を空欄とする。
x をルックアップキーに設定して、取得ボタンをクリック
document.querySelector('.component-app-lookup-inputlookup input.input-text-cybozu').value = 'x';
document.querySelector('.button-simple-cybozu.input-lookup-gaia').click();
ルックアップキーに x が残ってしまい、ご希望のクリア結果にはなりません。
rex0220 さん
ご返答ありがとうございます。
また、いくつか試して頂いてありがとうございます!
わかりました。
もう少し何かないか粘ってみて、厳しそうだったら、
保存前にルックアップのクリアを押すようにしてもらいます。
ありがとうございました!