ボタンを押すと、テキストがコピーされる的な・・・
そういうボタンを作りたいことってないですか?
実を言うと、jQuery ならそういうのでも数行くらいで作れます。
ここでは忘備録も兼ね、そういうテキストコピーボタンを jQuery で作る手順まとめました。
長いテキストをストレスなくコピーしてもらいたいとか、そういう時に役立つはずです。
手順1.まずはjQueryを読み込もう
まず jQuery が必須なので、最低限読み込み
あとレイアウト調整に便利なので Bootstrap とかも読み込んどきます。(任意)
1 2 |
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" /> |
やっぱりCDNでインクルードするのが楽です。
あともしCDNじゃなくて、直読みしたいなどの場合・・・
次の公式サイトから直ダウンロードもできます。
- Bootstrap => https://getbootstrap.com/docs/4.3/getting-started/download/
- jQuery => https://jquery.com/download/
どっちで読み込むかはお好きな方でどうぞ
必要なら FontAwesome も入れておとくと便利
あとこれは必ずってわけじゃないんですが、、、
ボタンのアイコンをカスタマイズするなら FontAwesome も必要です。
1 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.9.0/css/fontawesome.min.css" /> |
あとボタン用のアイコンは次ページから色々探せます。
アイコン検索 : https://fontawesome.com/icons
検索で "clip" とか "clipboard" で検索すれば、よさげなアイコンが見つかるはず
手順2.コピーテキストボタンを用意&実装
そうしたら次に、テキスト要素とボタン要素を用意します。
ボタンがクリックされたら、その横のテキストがコピーされる的なイメージ
例えば APIキー みたいな超長いテキストをコピー対応させたいとしましょう。
その場合を例に出すなら、次のようなタグを用意してください。(Bootstrap使用)
1 2 3 4 5 6 7 8 9 |
<div> APIキー : <span class="text"> tbsUQRZjaHf9p4iHHet3 </span> <lable class="btn btn-text p-0 m-0 copy-text-btn"> <i class="fas fa-paste"></i> </label> </div> |
このタグで重要なポイントは次の3つ
- 必ず全体をdivタグで囲んで親要素を作る
- テキスト要素に text クラスを付与
- ボタンには copy-text-btn クラスを付与
これ以外のテキストとか、アイコンは好きに改変してOKです。
そうしたら最後に、コピーボタンがクリックされたときの処理を追加
1 2 3 4 5 6 7 8 9 10 11 12 |
window.addEventListener('load', function(){ /// コピーテキストボタンを実装 $('.copy-text-btn').on('click',function(){ /// テキスト要素を選択&クリップボードにコピー var textElem = $(this).parent().find('.text'); window.getSelection().selectAllChildren(textElem[0]); document.execCommand("copy"); /// コピー完了した後の処理 /// トースト通知と化すると親切かも...\ }); }); |
ボタンがクリックされたら、
その親要素内部の
text クラスを持つ要素を
selectAllChildren でテキスト選択
そのあとに document.execCommand("copy"); を実行するだけです。
あとコメントにも書いた通り、
コピー完了後は何か通知的なものを出すと親切ですね。
アラートもいいけど少しダサいので、トースト通知するとカッコいいかも
▼もしそういうトースト表示したいなら、Toastr を使うのがオススメ
上記事で使い方は解説したので、良ければご覧ください。
そんなこんなで、コピーテキストボタンの完成!
実際の見た目はこんな感じです(ただし Bootstrap 使用)
なんかそれっぽくないですか?それっぽですよね?笑
実際に横のボタンを押すと、
クリップボードにコピーされ、テキストも選択されます。
▼実際にコピーボタンを押したときの様子
ただ単純にコピーするだけでなく、
コピーしたことがはっきり分かるとユーザー的に親切だと思います。
ここまでのまとめ
ここまでが jQuery で作れるコピーボタンの実装方法
僕自身、ダラダラと長いテキストとかを手動でコピーするのは嫌いです。
そういう機会損失をなくすのに、コピーテキストボタンが役立つかもしれません。
以上、jQueryでコピーテキストボタンを実装する手順でした。それではバイバイ(^_^)/~