本文介绍如何利用 navigator.clipboard.writetext() 原生 api,将多个 元素的值无缝拼接(去除空格、换行及非数字字符),并一次性复制到剪贴板,无需依赖 clipboard.js 或 jquery。
在实际开发中,为表单添加“一键复制”功能时,若直接使用 data-clipboard-target 指向整个
更简洁、可控且现代的解法是:弃用第三方库,改用浏览器原生的 navigator.clipboard.writeText()。它支持异步写入纯文本,并允许你完全自定义拼接逻辑。
Copy Copy
// 获取所有复制按钮 const copyButtons = document.querySelectorAll('.btn_copy'); Array.from(copyButtons).forEach(button => { button.addEventListener('click', async () => { const selector = button.getAttribute('data-clipboard-target'); if (!selector) return; const inputs = document.querySelectorAll(selector); const values = Array.from(inputs) .map(input => input.value || '') // 防空值 .map(val => val.replace(/[^0-9]/g, '')) // 【关键】仅保留数字(可选) .join(''); // 无缝拼接,无分隔符 try { await navigator.clipboard.writeText(values); console.log(`Copied: "${values}"`); // ✅ 可在此添加成功提示(如 Toast) } catch (err) { console.error('Failed to copy: ', err); // ❌ 建议 fallback:降级使用 document.execCommand(仅旧版浏览器) } }); });
相比 Clipboard.js 的声明式绑定,原生 navigator.clipboard.writeText() 提供了更高的灵活性与可控性。通过精准选择器 + 数组链式处理(.map().join(”)),你不仅能彻底消除换行与空格,还能自由扩展逻辑——例如自动补零、添加分隔符、格式化为手机号等。这既是轻量化的最佳实践,也是现代 Web 开发中“优先使用原生 API”的典型范例。
php数组怎样按权重筛选排序_php数组权重筛选教程【教程】
Composer quiet模式怎么开 完全静默执行命令配置【自动化】