JavaScript で paste 内容を書き換える
はじめに
テキストフィールド、テキストエリア、編集可能な要素(contenteditable)へのペースト処理でペースト文字列を上書きして別の文字列や一部変更した文字列をペーストする処理を実現します。
サンプル
function onPaste(event) {
const data = event.clipboardData || window.clipboardData;
const paste = data.getData('text');
// 上書き文字列の作成(改行文字を空文字に置換する)
const text = paste.replace(/\r?\n/g, '');
if (paste != text) {
if (document.execCommand('insertText', false, text)) {
// 上書きに成功した場合、元々の貼り付けイベントを中断(伝搬阻止)する
event.preventDefault();
event.stopImmediatePropagation();
}
}
};
document.getElementById('input_id').addEventListener('paste', onPaste, true);
使用案
- 電話番号のハイフンを削除する
- 住所の半角数字を全角数字に置き換える
- 行超行末のスペースを削除する
- ...
備考
Text 形式だけでなく、 HTML 形式で書き込むこともできます。
document.execCommand('insertText', false, text)
document.execCommand('insertHTML', false, text)