美文网首页
select()实现文本默认选中以及setSelectionRa

select()实现文本默认选中以及setSelectionRa

作者: 来碗鸡蛋面 | 来源:发表于2019-08-02 23:48 被阅读0次

    原创声明

    本文系作者辛苦码字所得,欢迎分享和转载,但请在明显位置注明作者的如下信息:
    笔名:来碗鸡蛋面
    简书主页:https://www.jianshu.com/u/4876275b5a73
    邮箱:job_tom@foxmail.com
    CSDN ID:tom_wong666

    问题:

    在需要大量复制黏贴的场景中,自动选择指定元素内所有文本,可以减少用户点选操作,提升交互体验;
    另外,也有一些场景需要获取用户在指定元素上选择的内容。
    本文参考《JavaScript高级程序设计(第3版》整理如下代码,给以上两个问题提供一种解决思路。

    正文:

    一,自动选择指定元素内所有文本

    <html lang="zh-en">
        <head>
        </head>
        <body>
            <input type="text" value="hello world" id="myInput"></input>
            <script>
                // 获取input元素
                var myInput =  document.getElementById('myInput');
                // select()默认选中全部元素:元素会直接获取焦点,并显示被选中的内容
                myInput.select();
            </script>
        </body>
    </html>
    

    二,获取用户在指定元素上选择的内容

    <html lang="zh-en">
        <head>
        </head>
        <body>
            <input type="text" value="hello world" id="myInput" autofocus></input>
            <script>
                // 获取input元素
                var myInput =  document.getElementById('myInput');
                // setSelectionRange(1,5)默认选中指定元素的指定内容,参数定义同slice
                // 虽然会选中指定的内容,但是不会直接显示被选中的内容
                // 要看到选择的文本,必须在调用 setSelectionRange()之前或之后立即将焦点设置到文本框
                // 本例中在元素上加了autofocus属性以实现此效果
                myInput.setSelectionRange(1,5);
                // 监控光标在元素内移动的事件
                myInput.onmousemove =  function() {
                    // 获取选中状态的偏移值,并以此计算用户选择的内容
                    const slectText = myInput.value.slice(myInput.selectionStart,myInput.selectionEnd);
                    console.log(slectText);
                }
            </script>
        </body>
    </html>
    

    相关文章

      网友评论

          本文标题:select()实现文本默认选中以及setSelectionRa

          本文链接:https://www.haomeiwen.com/subject/ddbhdctx.html