2012-03-10 1 views
1

모든 div 태그를 제거하는 방법 (내용은 제외)? (conteneditable = "true"로 작업, HTML5)모든 div 태그를 제거하는 방법 (포함 된 콘텐츠 제외) (contenteditable = "true", HTML5로 작업)

저는 실제 텍스트가 아닙니다. 단지 <div>contenteditable="true"입니다. '제출'버튼을 누르면 코드는이 요소의 innerHTML을 읽습니다. 좋지 않아.

그래서, 텍스트 영역으로 사용하려면, 나는 다음을 수행해야합니다

  1. 콘텐츠없이 <div> 태그를 제거합니다 (I는, 새로운 라인을 시작 폐쇄 브라우저 이전 <div> (있는 경우) 새로운 <div>을 시작있을 때 .
  2. <br />에서 다른 다른 모든 태그를 제거합니다 (그러나 행에 <br> 태그 2 개 이상이 삭제 된 경우).

의 (b 서버 측과 사용자 측에서? 그것을 실현하는 방법 그것이 xhr로 보내는 ecause).

+0

이 "좋지 않다"무엇입니까? – Tomalak

+0

죄송합니다, S.O. "태그 선택"입력에서 엔터를 눌렀을 때 질문을 게시했습니다. 이제 문제가 해결되었습니다. –

답변

0

나는 과거에 편집 가능한 div를 사용 했었지만이를 사용하는 가장 좋은 방법은 간접적입니다. 대신에 PHP에서 콘텐트를 던지기 위해 어딘가에 숨겨진 textarea을 가지고 있습니다. 제출 단추는 분명히 숨겨져 있지 않습니다. 그런 다음 다른 곳에서 내용을 편집 할 수 있습니다. 그런 다음 jQuery를 사용하여 div의 콘텐츠를 가져온 다음및 <div></div> 태그에 대해 펑키 한 정규 표현식을 사용하여 구문 분석 할 수 있습니다. 해당 jQuery로

<div contenteditable="true" style="width:200px; height:100px;" id="InputDiv"> 
... 
</div> 

<form action="something.php"> 
    <textarea id="InputArea" style="visibility:hidden;"> 
    <input onclick="getData()"type="submit" value="submit" > 
</form> 

는 :

function getData(){ 
    var rawDiv = $("#InputArea").text(); 
    var parsedStr = /*some funky regex*/; 
    $("#InputArea").text(parsedStr); 
} 

나는 일을해야이 선을 따라 JQuery와와의 contentEditable div의,하지만 뭔가 내 이전 작업을 잘못 것으로 보인다.

대안 :

오히려 콘텐츠를 편집 된 div를 사용하는 것보다, 왜 안 사용 인하? 이런 종류의 문제를 해결할 필요가 적습니다.

+1

'/ * some funky regex * /'- 진지하게? – Tomalak

0

부모에게 <div>을 가져다 대고 노드를 복제하고 복제 된 트리를 탐색하십시오. 내용이없는 노드노드와 다른 허용되지 않는 태그를 제거하십시오.

트래 버 싱을 완료하면 Dom 요소의 남은 것을 제출할 수 있습니다.

+0

허용 태그 : '
'. –

0

이 트릭을 수행합니다은`innerHTML`와

document.getElementById(/*your_div_to_be_removed*/).removeNode(false); 
+0

Outch, 내 코드가 IE에서만 작동한다는 것을 알았습니다. – Teemu