新規投稿
フォローする

特定フィールドのコピーと貼り付け

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

1点困っていることがあり、わかる方がいましたら教えていただけますでしょうか。

<概要>
・レコード詳細画面内に、対象フィールドのコピーボタンを設けたが、
 ボタンを押した際、ブラウザ上のデバックモードでは、対象フィールドの中身はコピーできてそうだが、
 メモ帳でなどで、右クリック⇒貼り付けの動作を行ったときにフィールドの内容が貼り付けできない。

<メモ>
・レコード詳細画面の空スペース名:my_copy_field1
・コピー元フィールド名:住所

(function() {
    "use strict";
    var events = ['app.record.detail.show']; //レコード詳細画面のみ表示
    kintone.events.on(events, function(event) {
    var myCopyFieldButton1 = document.createElement('button');
    myCopyFieldButton1.id = 'my_copy_field1';
    myCopyFieldButton1.innerText = '住所キリトリ';
    myCopyFieldButton1.onclick = function () {
               var text1 = kintone.app.record.get();
                var cp1 = text1.record.住所.value ;
                console.log(cp1); //※フィールド内のコピーがされていることをログから確認 
                document.execCommand("copy");
                alert('コピーしました');
    }
    kintone.app.record.getSpaceElement('my_copy_field1').appendChild(myCopyFieldButton1);
        });
  })();

 

宜しくお願いいたします。

0

3件のコメント

Avatar
Lorenz Ras

copy現在の選択範囲をクリップボードにコピーします。この動作が有効になる条件は、ブラウザーによって様々であり、時の経過により発展する可能性があります。このコマンドが使用可能かどうかは、ブラウザーの互換性のセクションで確認してください。

テクストが選択されていないといけないのようですね。

https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select

そして動作は出来るかもしれませんが、Document.execCommand() という機能はもう廃止されたそうです。https://developer.mozilla.org/ja/docs/Web/API/Document/execCommand

代わりにClipboard APIがあるそうです。https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API

Lorenz Rasにより編集されました
0
Avatar
t.sato

Lorenz Ras様

いつもありがとうございます。

まさか、Document.execCommand() が廃止されていたとは・・・。。

いただた情報を元に、ボタンでのコピー、貼り付けができるようになりました。

(function() {
"use strict";

//var events = ['app.record.create.show','app.record.edit.show',];
var events = ['app.record.detail.show']; //レコード詳細画面のみ表示

kintone.events.on(events, function(event) {
// 1 任意のスペースフィールドにボタンを設置
var myCopyFieldButton1 = document.createElement('button');
myCopyFieldButton1.id = 'my_copy_field1';//スペースフィールド
myCopyFieldButton1.innerText = '住所キリトリ';//ボタン名
myCopyFieldButton1.onclick = function () {//クリックした際の動き
var text1 = kintone.app.record.get();
navigator.clipboard.writeText(text1.record.住所.value);
alert('コピーしました');
}
kintone.app.record.getSpaceElement('my_copy_field1').appendChild(myCopyFieldButton1);

});
})();
0
Avatar
Lorenz Ras

t.sato様

よかったです。私も勉強になりました。

便利な機能のようで、アイデアを頂き、今回のカスタマイズに実装しようと思います。

ありがとうございました。

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