2014-07-22 3 views
3

this question 덕분에 Tim Down이 게시 한 답변을 통해 "contenteditable"div에서 캐럿 앞에 단어를 가져 오는 기능을 만들었습니다. 여기Div "contenteditable": 캐럿 이전 단어 가져 오기 및 삭제

fiddle, 그리고 여기에 함수의 :

function getWordPrecedingCaret (containerEl) { 
    var preceding = "", 
     sel, 
     range, 
     precedingRange; 
    if (window.getSelection) { 
     sel = window.getSelection(); 
     if (sel.rangeCount > 0) { 
      range = sel.getRangeAt(0).cloneRange(); 
      range.collapse(true); 
      range.setStart(containerEl, 0); 
      preceding = range.toString(); 
     } 
    } else if ((sel = document.selection) && sel.type != "Control") { 
     range = sel.createRange(); 
     precedingRange = range.duplicate(); 
     precedingRange.moveToElementText(containerEl); 
     precedingRange.setEndPoint("EndToStart", range); 
     preceding = precedingRange.text; 
    } 
    var lastWord = preceding.match(/(?:\s|^)([\S]+)$/i); 
    if (lastWord) { 
     return lastWord; 
    } else { 
     return false; 
    } 
} 

내 질문 : 일단 마지막 단어를 입수, 어떻게 그것이 사업부에서 제거 할 수 있습니까? div에서 단어의 어떤 항목도 제거하고 싶지는 않으며 caret 앞에 오는 항목 만 제거하려고합니다.

미리 감사드립니다.

답변

0

당신은 그럼 당신은 substring(0, lastWordPosition) 또는 당신이 원하는대로 ...

을 할 수 match()

var lastWordPosition = preceding.match(/(?:\s|^)([\S]+)$/i).index; 

index 속성을 사용하여 시도 할 수

관련 문제