欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js实现html点击文本框,弹出文本框功能

程序员文章站 2022-05-29 19:46:21
...

实现这样一个功能,当一个文本框获得焦点时,弹出一个更大的文本框方便用户输入,当切换焦点时,弹出的文本框就消失,同时保证两个文本框输入的文本值一致

效果如下图:

js实现html点击文本框,弹出文本框功能

 

直接上代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>testBoxPop</title>
    <style>
        #mainDiv{
            position: absolute;
            top: 20%;left: 20%;
            width: 80%;
            height: 80%;
        }
        #label1{
           margin-right: 2%;
            /*vertical-align: top;*/
        }
        #mainText{
            width: 30%;
        }
        #popTextarea{
            display: none;
            font-size: 30px;
            font-weight: bold;
        }
    </style>
    <script>

        var popTextarea;
        //当焦点不在弹出文本框时,关闭弹出文本框,(document.activeElement为当前获得焦点的元素)
        function shutdownUpTextarea(popTextarea){
            console.info(document.activeElement);
            if (document.activeElement !== popTextarea)
                popTextarea.style.display = "none";
        }
        window.οnlοad=function (ev) {
           popTextarea=document.getElementById("popTextarea");
            var mainText=document.getElementById("mainText");

            mainText.onfocus = function () {
                popTextarea.style.display = "block";
            };

            mainText.οnblur=function (ev1) {
                //如果下一个获得焦点的对象不是是popTextarea,那么关闭文本框
                setTimeout("shutdownUpTextarea(popTextarea)",1);//setTimeout中若执行的函数带参数,那么参数必须是全局变量
            };

            popTextarea.onblur = function (ev1) {
                if (document.activeElement !== mainText)
                    popTextarea.style.display = "none";
            };

            //控制两个文本框的输入内容相同
            mainText.oninput = function () {
                popTextarea.value = mainText.value;
            };
            popTextarea.oninput = function (ev1) {
                mainText.value = popTextarea.value;
            }
        }


    </script>
</head>
<body>
<div id="mainDiv">
    <label id="label1">文本框弹出测试</label>
    <input type="text">
    <textarea name="" id="mainText" cols="30" rows="10"></textarea>
    <textarea name="" id="popTextarea" cols="50" rows="10"></textarea>
</div>
</body>
</html>