제거 "의 keyup"이벤트/편집 가능한 사업부 내가 편집 가능한 DIV를 사용하여 Highliting
<div class="editableDiv" contenteditable="true">
sdtgssdrsdrtyy ╚asasasarrstssdertrtyrtyrrty ☻aaaaaaaaaaaaaaaaadaafsdsf4n
</div>
나는 내가 hilighting의 jQuery 라이브러리를 사용한 비 ASCII 문자를 hilight하는 사용자에게 비 ASCII 문자를 표시하는 작업을 데를 발사하지 "hilight"클래스의 스팬을 추가하여 nonascii 문자를 강조 표시합니다. 다음과 같이 innerHTML을가 ...
<span class="highlight">╚</span>asasasarrstssdertrtyrtyrrty
<span class="highlight">☻</span>aaaaaaaaaaaaaadaafsdsf4n
강조가 잘 작동하지만, 유일한 문제가 발생 사용자가 비 ASCII 문자를 삭제할 때이다와 내가 innerHTML을 체크 할 때, 입력 된 문자도 hilighted 가도록 위치에서 입력을 시작합니다 그것은
<span class="highlight">☻aaa</span>aaaaaaaaaaaaaadaafsdsf4n
내가 편집 DIV에 "의 keyup"이벤트를 사용하여이 문제를 해결하기 위해이 이벤트에 내가 비 ASCII 문자로 범위를 오토넷하고 ... 새로 입력 한 문자는 다음과 스팬 태그에 가지고 있음을 보여줍니다 새로 입력 한 문자를 새 스팬 태그에 넣고 이전 문자를 다시 삽입합니다. 새로운 입력 된 chacters에도 강조 표시가 없지만 이후에 다시 입력하면이 이벤트가 실행되지 않습니다. 내가 명시 적으로 사업부의 innerHTML을 변경 되었기 때문에
나는이 원인을 같은 단서를 가지고 있지 않은거야?이 있습니까? 도와주세요 .....
다음은의 keyup 기능 ....
입니다$(document).on('keyup', ".editableDiv", function() {
var hilighterSpans = $(this).children(".highlight");
hilighterSpans.each(function (x, y) {
var spanText = $(y).text().trim();
if (spanText == "") {
$(y).remove();
}
else {
var regex = new RegExp("[^\u0020-\u007E]+");
var nonasciiChar = regex.exec(spanText);
if (nonasciiChar != "") {
var asciiChars = spanText.replace(nonasciiChar, '');
var spannode1 = document.createElement('span');
var spannode2 = document.createElement('span');
spannode2.className = 'highlight';
spannode2.innerHTML=nonasciiChar;
if (spanText.indexOf(nonasciiChar) == 0) {
$(spannode1).append(spannode2);
$(spannode1).append(asciiChars);
}
else {
$(spannode1).append(asciiChars);
$(spannode1).append(spannode2);
}
$(this).replaceWith(spannode1);
}
}
});
});
는
<span><span class="highlight">╚</span>assd</span>
<span><span class="highlight">☻</span>aaa</span>
이 문제의 원인이 될 수 있습니다 ... 다음과 같이 innerHTML을가 대체? 내가 강조 비 ASCII 문자에서 바로 입력 해보십시오 JSFiddle
는 ..... 내가 먼저 새로운 입력 한 문자가 변경 비록이 (잘 작동 입력에 대한 현재 .... 새로운 입력 한 문자가 강조 표시를 해제하려면 위치는 이걸 조사해야합니다.) ...하지만 다시 입력하면 코드가 작동하지 않습니다 (키 업 이벤트가 시작되지 않습니다).
메모리가 나를 지원한다면, 일부 브라우저가 해당 이벤트를 발생시키기 위해서는 div에'tabindex' 속성을 추가해야합니다. – Brian
콘솔에 오류가 있는지 확인 했습니까? – LcSalazar
문제가'keyup'이나 어떤 이벤트와 같지 않습니다. 그것은 요소를 추가하는 하이라이트에 관한 것이므로 사용자가 강조 표시된 텍스트를 변경하면 요소를 제거해야합니다. – melancia