茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    JS在可編輯的div中的光標(biāo)位置插入內(nèi)容的方法
    來源:易賢網(wǎng) 閱讀:5972 次 日期:2014-12-19 14:27:50
    溫馨提示:易賢網(wǎng)小編為您整理了“JS在可編輯的div中的光標(biāo)位置插入內(nèi)容的方法”,方便廣大網(wǎng)友查閱!

    首先要讓DIV啟用編輯模式

    代碼如下:

    <div contenteditable=true id="divTest"></div>

    通過設(shè)定contenteditable=true開啟div的編輯模式.這樣DIV就可以跟文本框一樣輸入內(nèi)容了。

    不扯話題了。下面說怎么獲取或設(shè)置光標(biāo)位置.

    2個步驟:

    ① 獲取DIV中的光標(biāo)位置

    ② 改變光標(biāo)位置

    代碼如下:

    var cursor = 0; // 光標(biāo)位置

    document.onselectionchange = function () {

    var range = document.selection.createRange();

    var srcele = range.parentElement();//獲取到當(dāng)前元素

    var copy = document.body.createTextRange();

    copy.moveToElementText(srcele);

    for (cursor = 0; copy.compareEndPoints("StartToStart", range) < 0; cursor++) {

    copy.moveStart("character", 1);//改變光標(biāo)位置,實際上我們是在記錄cursor的數(shù)量.

    }

    }

    給document綁定光標(biāo)變化事件。用來記錄光標(biāo)位置.

    這樣就可以拿到DIV的光標(biāo)位置了.

    代碼如下:

    function moveEnd(obj) {

    lyTXT1.focus();

    var r = document.selection.createRange();

    //因為這里死從當(dāng)前光標(biāo)開始移動的(好像文本框的是從0算起.)所以我們需要拿到當(dāng)前光標(biāo)位置,然后就可以計算出要移動多少位了,這樣就可以把光標(biāo)移動到想要的位置了

    r.moveStart('character', lyTXT1.innerText.length - cursor);

    r.collapse(true);

    r.select();

    }

    通過上面的我們就可以將DIV中的光標(biāo)移動到最后面了

    一個完整的實例

    復(fù)制代碼 代碼如下:

    <button type="button" onclick="document.getElementById('test').focus(); insertHtmlAtCaret('<b>INSERTED</b>');">插入字符</button>

    <div contentEditable="true" style="height:50px; border:2px solid red;" id="test"> </div>

    function insertHtmlAtCaret(html) {

    var sel, range;

    if (window.getSelection) {

    // IE9 and non-IE

    sel = window.getSelection();

    if (sel.getRangeAt && sel.rangeCount) {

    range = sel.getRangeAt(0);

    range.deleteContents();

    // Range.createContextualFragment() would be useful here but is

    // non-standard and not supported in all browsers (IE9, for one)

    var el = document.createElement("div");

    el.innerHTML = html;

    var frag = document.createDocumentFragment(), node, lastNode;

    while ( (node = el.firstChild) ) {

    lastNode = frag.appendChild(node);

    }

    range.insertNode(frag);

    // Preserve the selection

    if (lastNode) {

    range = range.cloneRange();

    range.setStartAfter(lastNode);

    range.collapse(true);

    sel.removeAllRanges();

    sel.addRange(range);

    }

    }

    } else if (document.selection && document.selection.type != "Control") {

    // IE < 9

    document.selection.createRange().pasteHTML(html);

    }

    }

    再看一個基于jquery的實例

    代碼如下:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">

    <html xmlns="">

    <head>

    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">

    <script type="text/javascript" src=">

    <title>contenteditable</title>

    <style>

    *{

    margin:0;padding:0;

    }

    .im-message-area{

    width:98%;

    padding:2px;

    height:75px;

    border:#000 solid 1px;

    background:#fff;

    font:12px/20px arial,"5b8b4f53";

    word-wrap:break-word;

    overflow-y:auto;

    line-height:1;

    }

    .ul{display:none;}

    .ul li{

    background-color:#CCC;

    width:50px;

    }

    </style>

    <script language="javascript" type="text/javascript">

    function inimage(text){

    var obj= $(".im-message-area")[0];

    var range, node;

    if(!obj.hasfocus) {

    obj.focus();

    }

    if (window.getSelection && window.getSelection().getRangeAt) {

    range = window.getSelection().getRangeAt(0);

    range.collapse(false);

    node = range.createContextualFragment(text);

    var c = node.lastChild;

    range.insertNode(node);

    if(c){

    range.setEndAfter(c);

    range.setStartAfter(c)

    }

    var j = window.getSelection();

    j.removeAllRanges();

    j.addRange(range);

    } else if (document.selection && document.selection.createRange) {

    document.selection.createRange().pasteHTML(text);

    }

    }

    $(document).ready(function(){

    $('#button').click(function(){

    $('.ul').show();

    })

    $('.ul li').each(function(){

    $(this).click(function(){

    inimage($(this).text());

    })

    })

    });

    </script>

    </head>

    <body>

    <div contenteditable="true" id="im_message_area" class="im-message-area"><br></div>

    <a href="javascript:void(0)" id="button">按鈕</a>

    <ul class="ul">

    <li>(笑)</li>

    <li>(哭)</li>

    <li>(樂)</li>

    </ul>

    </body>

    </html>

    更多信息請查看IT技術(shù)專欄

    更多信息請查看腳本欄目
    易賢網(wǎng)手機(jī)網(wǎng)站地址:JS在可編輯的div中的光標(biāo)位置插入內(nèi)容的方法
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報班

    • 報班類型
    • 姓名
    • 手機(jī)號
    • 驗證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報警專用圖標(biāo)