2013-08-13 3 views
1

호기심 문제. <textarea>을 비우고 다른 내용으로 바꿔야합니다. JSFiddle의 테스트는 아무 것도 수동으로 입력하지 않으면 작동하지만 텍스트 영역에 아무 것도 입력하지 않으면 메소드가 작동을 멈 춥니 다.데이터가 포함 된 jQuery 빈 텍스트 영역

http://jsfiddle.net/ecFjH/

은 내가 단순히 .val('New stuff here') 그러나 나는 HTML 엔티티는 &gt;&lt;으로 달성되지 않습니다) .val <> (로 표시 할 수 있음을 이해합니다.

+1

'<' and '>'을 입력하는 이유는 무엇입니까? 나는 textarea가 그 안에 아무것도 렌더링하지 않을 것이라고 생각한다. 그것은 평범한 텍스트 일뿐입니다. 또한 수동 입력과 수동 입력의 차이점은 무엇입니까? 그게 아닌가요? – putvande

+0

val을 사용하여 잘 작동합니다. 방금 예제에서 시도했습니다 – Ibu

+1

[HTML 엔터티 디코딩] (http://stackoverflow.com/questions/5796718/html-entity-decode) 가능한 복제본 ([XY 문제] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)). – cmbuckley

답변

3

(<와> 업데이트) 그것은 당신의 진짜 문제 같은 소리는 텍스트 영역에서 그들을 렌더링하는 HTML 엔티티를 디코딩 할 것입니다. 당신은이 작업을 수행하려면 다음을 사용할 수 있습니다

var content = 'text &gt; HTML'; 
$('#myText').val($('<div/>').html(content).text()); 

그러나 만 신뢰할 수있는 내용이 작업을 수행해야합니다. 텍스트 영역의 콘텐츠가 생성되지 않은 경우 악성 HTML이 포함될 수 있습니다.이 HTML은 페이지에서 부적절하게 생성됩니다.

더 자세한 예를 보려면 본질적으로 동일한 질문 인 this answer을 참조하십시오. 받아 들인 답은 위의 내용을 반복하지만, 링크 된 대답은 더 안전합니다.

+0

감사합니다. 나는 네가 옳다고 생각하는데, 정말로 내가 한 것은 대체 할 수없는 문제보다는 HTML 인코딩/디코딩이었다. 링크를 제공해 주셔서 감사합니다. –

1

텍스트 영역에 html이 없습니다. $('#myText').val('Button 2 was pressed');을 사용하여 이전 내용을 제거하고 "Button 2 was pressed"텍스트를 넣으십시오.

확인 here

관련 문제