2011-05-11 2 views
0

내 질문이 this topic에서 발생합니다. 나는 혼란스럽고 몇 시간 동안 노력 해왔다. This fiddle은 옵션 중 하나를 선택할 때 텍스트 영역에 삽입되는 텍스트를 보여줍니다.텍스트 영역에 텍스트를 삽입 한 후 기능이 변경됩니다.

텍스트 영역에 일부 단어를 입력하면 다른 옵션을 선택할 때 텍스트 영역의 텍스트가 변경되지 않습니다. 괜찮아. 그러나 단어를 삭제하면 전체 기능이 어떻게 든 사라집니다.

는 내 말은 내가 절대적으로 난처한 상황에 빠진거야 때문에 작은 'testplan'을 쓸 것이다 원하는 것을 이해하는 데 도움이 경우

  1. 열기 the fiddle
  2. 형 'A'후 '텍스트' 텍스트 영역에서.
  3. 옵션 2 ->
  4. 지금 'TextA'
  5. 선택 옵션 1 삭제 텍스트 영역에서 'TextA'숙박 -> 당신은 내가 옵션 1
을 선택하지만 텍스트 영역은 빈칸으로 볼 수

이 동작을 방지하려면 어떻게합니까? 텍스트 영역에 추가 된 단어는 항상 유지됩니다. 그러나 추가가 없다면 그 행동은 변하지 않을 것이다.

아이디어가 있으십니까?

+0

jsfiddle이 (가) Google 크롬에서 예상대로 작동합니다. – rsplak

+0

Chrome에서 테스트했습니다. 옵션 2를 선택하면 'TextA'가 사라집니다. 이상하게 보입니다. 나는 그것을 머물고 싶다. 그것은 FF에 머물러 있습니다. – glup

+0

이것을 독립형 HTML 파일에서 사용해 보셨습니까? 나는 FF로 이것을보고 있고 무언가가 깨져 보이지만 그것은 Fiddle과있을 수있다. – Dancrumb

답변

2

html()은 텍스트 영역의 내용을 설정하는 잘못된 방법입니다. 대신 val()을 사용하십시오.

이유는 텍스트 영역이 시작 태그와 종료 태그 사이에 포함 된 텍스트에서 초기 값을 가져옵니다. 현재 값은 항상 value 속성에 저장됩니다. innerHTML (jQuery의 html() 메소드가하는 것)을 사용하여 텍스트 영역의 자식 노드를 변경하면 처음에는 value 속성이 변경됩니다 (스크립트 또는 텍스트 영역 내용을 편집하는 사용자가 변경 한 후에). 텍스트 영역의 자식 노드와 해당 노드 사이의 링크 값이 깨졌습니다.

여기 html() 대신 val()를 사용하여 jsFiddle의 업데이트 버전입니다 : http://jsfiddle.net/J4Rkt/5/

결론 : 텍스트 영역의 현재 값을 얻을 수 html()를 사용하지 않습니다.

관련 문제