• js操作textarea方法集合


    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
    + request.getServerName() + ":" + request.getServerPort()
    + path + "/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>">

    <title>js操作textarea方法集合</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">

    <style type="text/css">
    #testlujun {
    348px;
    height: 80px;
    border: #ddd 1px solid;
    background: #fafafa;
    padding: 5px 10px;
    outline: none;
    resize: none;
    }

    </style>
    <body>
    <textarea id="testlujun">abcdefghijklmnopqrstuvwxyz</textarea>
    <br>
    <input onclick="alert(TT.getCursorPosition(test))" type="button" value="光标位置">
    <input onclick="TT.setCursorPosition(test,3)" type="button" value="设置光标到第3位置">
    <input onclick="TT.add(test,'你好')" type="button" value="添加'你好'到光标后面">
    <input onclick="TT.del(test,2)" type="button" value="删除光标前2个字符">
    <input onclick="TT.del(test,-2)" type="button" value="删除光标后2个字符">
    <input onclick="TT.sel(test,0,2)" type="button" value="选中字符0-2的位置">
    <input onclick="TT.selString(test,'mno')" type="button" value="选中字符'mno'的位置">
    </body>
    <script type="text/javascript">
    // <![CDATA[
    var test = document.getElementById('testlujun');
    var TT = {
    /*
    * 获取光标位置
    * @Method getCursorPosition
    * @param t element
    * @return number
    */
    getCursorPosition: function(t) {
    if (document.selection) {
    t.focus();
    var ds = document.selection;
    var range = ds.createRange();
    var stored_range = range.duplicate();
    stored_range.moveToElementText(t);
    stored_range.setEndPoint("EndToEnd", range);
    t.selectionStart = stored_range.text.length - range.text.length;
    t.selectionEnd = t.selectionStart + range.text.length;
    return t.selectionStart;
    } else {
    return t.selectionStart;
    }
    },

    /*
    * 设置光标位置
    * @Method setCursorPosition
    * @param t element
    * @param p number
    * @return
    */
    setCursorPosition: function(t, p) {
    this.sel(t, p, p);
    },

    /*
    * 插入到光标后面
    * @Method add
    * @param t element
    * @param txt String
    * @return
    */
    add: function(t, txt) {
    var val = t.value;
    if (document.selection) {
    t.focus();
    document.selection.createRange().text = txt;
    } else {
    var cp = t.selectionStart;
    var ubbLength = t.value.length;
    var s = t.scrollTop;
    // document.getElementById('aaa').innerHTML += s + '<br />';
    t.value = t.value.slice(0, t.selectionStart) + txt + t.value.slice(t.selectionStart, ubbLength);
    this.setCursorPosition(t, cp + txt.length);
    // document.getElementById('aaa').innerHTML += t.scrollTop + '<br />';
    firefox = navigator.userAgent.toLowerCase().match(/firefox/([d.]+)/) && setTimeout(function() {
    if (t.scrollTop != s) t.scrollTop = s;
    },
    0)

    };
    },

    /*
    * 删除光标 前面或者后面的 n 个字符
    * @Method del
    * @param t element
    * @param n number n>0 后面 n<0 前面
    * @return
    * 重新设置 value 的时候 scrollTop 的值会被清0
    */
    del: function(t, n) {
    var p = this.getCursorPosition(t);
    var s = t.scrollTop;
    var val = t.value;
    t.value = n > 0 ? val.slice(0, p - n) + val.slice(p) : val.slice(0, p) + val.slice(p - n);
    this.setCursorPosition(t, p - (n < 0 ? 0 : n));
    firefox = navigator.userAgent.toLowerCase().match(/firefox/([d.]+)/) && setTimeout(function() {
    if (t.scrollTop != s) t.scrollTop = s;
    },
    10)
    },

    /*
    * 选中 s 到 z 位置的文字
    * @Method sel
    * @param t element
    * @param s number
    * @param z number
    * @return
    */
    sel: function(t, s, z) {
    if (document.selection) {
    var range = t.createTextRange();
    range.moveEnd('character', -t.value.length);
    range.moveEnd('character', z);
    range.moveStart('character', s);
    range.select();
    } else {
    t.setSelectionRange(s, z);
    t.focus();
    }

    },

    /*
    * 选中一个字符串
    * @Method sel
    * @param t element
    * @param s String
    * @return
    */
    selString: function(t, s) {
    var index = t.value.indexOf(s);
    index != -1 ? this.sel(t, index, index + s.length) : false;
    }

    }
    // ]]>
    </script>
    </html>

  • 相关阅读:
    设计模式 — 责任链模式
    BlockingQueue 阻塞队列(生产/消费者队列)
    DDD工作流持久化(十六)
    js中匿名函数和回调函数
    DDD模型领域WF到领域层(十五)
    DDD领域模型系统的工作流(十四)
    DDD领域模型数据访问权限之权限(十二)
    DDD领域模型数据访问之对象(十一)
    DDD领域模型数据访问权限之用户权限(十)
    DDD领域模型数据访问权限(九)
  • 原文地址:https://www.cnblogs.com/danson/p/4996689.html
Copyright © 2020-2023  润新知