js实现自动复制 弹框自动消失功能

mac2025-09-27  23

有个需求,下拉框选中后自动获取下拉框内的值,即自动复制功能 所以会用到document.execCommand("Copy")这个功能,但是需要先执行select,才能copy,所以想到用input type=hidden先保存值,然后再copy。 jsp代码如下:

&nbsp;面板: <select id="boardUrl"  name="boardUrl"  style="width: 150px">     <c:forEach var="board" items="${boards}" varStatus="keyIndex">         <option value="${board.absoluteUrl}">${board.boardName}</option>         &nbsp;     </c:forEach> </select> &nbsp;URL: <input type="text" id="boardUrlStr"  style="width: 450px;display: none" name="boardUrlStr" value=""/>

事件绑定: $("#boardUrl").on("change", copyBoardUrl);

copyBoardUrl函数内容:

function setBoardUrl(){     // 选择当前对象,因为下来框不能执行select,所以先存入hidden中     var absoluteUrl=$("#boardUrl").val(); //多选,获取object     $("#boardUrlStr").attr("value",absoluteUrl);     //获取input对象     var obj = document.getElementById("boardUrlStr");     var value = $(obj).attr("value");     obj.select();     var b = document.execCommand("Copy");     if(b){         //如果复制成功         alert("复制成功!");     }else{         //如果复制失败         alert("复制失败!");     } }

结果发现一直不能执行。 后来发现input的type=hidden 或display=none都会导致失败,因为无法选中

<a href="javascript:;" class="cuteShareBtn" οnclick="copyUrl()" id="copy"><button  class="btn" type=""  οnclick="">复制URL</button></a> 这种execcommand也不行,因为包含了跳转和按钮点击两个事件,copy会失败,可以修改为: <a href="javascript:;" class="cuteShareBtn" οnclick="coyt()" id="copy">复制</a>或 <button  class="btn" type=""  οnclick="copyUrl()">复制URL</button> 正确实例:

<!DOCTYPE html> <html> <head> <title>面板地址簿</title> <meta charset="utf-8"> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <script type="text/javascript">     function copyUrl2(data)         {             var id = data.id;             var Url2=document.getElementById(id+"url").innerText;             var oInput = document.createElement('input');             oInput.value = Url2;             document.body.appendChild(oInput);             oInput.select(); // 选择对象             document.execCommand("Copy"); // 执行浏览器复制命令             oInput.className = 'oInput';             oInput.style.display='none';             alert2();         }     function alert2()     {             $('#myModal').modal('show');         setTimeout(function(){$('#myModal').modal('hide');},800);     } </script> <body> <div class="col-md-12"> <br> <br> <div class="btn-group">     <button type="button" class="btn btn-default dropdown-toggle"              data-toggle="dropdown">         面板地址簿 <span class="caret"></span>     </button>     <ul class="dropdown-menu" role="menu">         <li><a><p onClick="copyUrl2(this)" id="biao1">面板1</p></a></li>         <li><a><p onClick="copyUrl2(this)" id="biao2">面板2</p></a></li>         <li><a><p onClick="copyUrl2(this)" id="biao3">面板3</p></a></li>     </ul> </div> <br> <br> <p>URL:<input type="text" name="FirstName" placeholder="复制到这里试试"></p> </div> <p style="display:none;" cols="20" id="biao1url">www.面板1的地址.com</p> <p style="display:none;" cols="20" id="biao2url">www.面板2的地址.com</p> <p style="display:none;" cols="20" id="biao3url">www.面板3的地址.com</p>      <!-- 模态框(Modal) --> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">     <div class="modal-dialog">         <div class="modal-content">                         <div class="modal-body">                 面板地址已复制到剪贴板!             </div>                     </div><!-- /.modal-content -->     </div><!-- /.modal-dialog --> </div><!-- /.modal --> </body> </html>

 

最新回复(0)