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

2023-05-16

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

 面板:
<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>

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js实现自动复制 弹框自动消失功能 的相关文章

随机推荐