2015-01-12 4 views
0

현재 Java 웹 응용 프로그램에서 JSP 페이지 중 하나에서 동적으로 생성 된 서식있는 텍스트 영역이 있고 그 용도로 CKEditor가 사용됩니다. 텍스트 편집기를 동적으로 생성 할 수 있습니다. jsp 페이지에는 버튼이 있습니다. 자바 스크립트 메소드를 클릭하면 텍스트 영역과 함께 새로운 행이 테이블에 추가됩니다. 일단 행이 추가되면, 우리는 CKEDITOR.replace ('editorName'); 메서드를 사용하여 텍스트 영역을 CKEditor로 바꿉니다. 아래 코드는 다음과 같습니다동적으로 추가 된 CKEditor 텍스트 영역에서 데이터를 읽을 수 없습니다.

JSP :

<table id="StepsList" style="float: left" width="100%" ></table> 

우리는 텍스트 영역의 창조의 수의 트랙을 유지하는 변수 ROWNUM을 유지하고 있습니다.

스크립트

var step = 'step'+rowNum; 
$("#StepsList").append("<tr><td><div class='richTextareaWrapp bottmsp' style='margin-top:10px;'><textarea cols='40' id="+step+" name="+step+"></textarea></div></td></tr>"); 
CKEDITOR.replace(step); 

생성 된 CKEditors의 내용을 읽으려면, 우리는 ROWNUM을 기준으로 반복된다.

스크립트 :

이 " 캐치되지 않는 예외 : 편집기 인스턴스"라는 오류가 발생합니다
for(var j=1;j<=rowNum;j++){ 
     obj = new Object(); 
     step = '#step'+j; 
     $(step).ckeditor(function(textarea){ 
      obj.value=$(textarea).val(); 
      }); 

     jsonStepsArr.push(obj); 
    } 

". 이미 제공된 요소에 부착"1 단계를

다음 코드는 자바 스크립트 파일로 작성

stackoverflow 및 google 솔루션에 대한 비슷한 게시물을 통해 대부분의 대체 또는 인스턴스를 파괴하는 것이 좋습니다. 그러나 그것은 내 목적을 달성하지 못했습니다. 누구든지 내 실수를 지적하거나이 코드를 작성해야한다면 어떻게 할 수 있습니까?

미리 감사드립니다.

답변

0

작성/액세스 기술을 일관되게 유지하십시오.

CKEDITOR.replace('editor1'); 

그리고 다음과 같은 jQuery를 호출하여 액세스 :

$('#editor1').ckeditor(function(textarea) { 
    // Do whatever... 
}); 

그것은 재생되지 않습니다 당신이 같은 정상 CKEDITOR.replace 호출로 편집기를 만들려고하는 경우처럼

이 보이는 서로 좋은.

귀하의 솔루션 : 결과로 그래서

중 하나에 당신의 첫 번째 통화를 변경 :

$('#'+step).ckeditor(); 

또는 두 번째 통화에

대신 jQuery를 사용하여 그냥 직접 인스턴스에 액세스 :

CKEDITOR.instances[ 'step'+j ].getData() 
+0

도와 주셔서 감사합니다. 나는 제안 된 변경을했다. 그러나 나는 여전히 같은 문제에 직면 해있다. – Charan

+0

나는 CKEditor.replace() 메소드와 관련이 있다고 생각한다. 왜냐하면 페이지에 텍스트 편집기가 있고 페이지로드시에 $ ('# step1'). ckeditor()를 사용하여 인스턴스를 생성하면 접근 방식으로 데이터를 읽을 수 있습니다. CKEditor.replace() 메서드를 사용하여 동적으로 만든 텍스트 영역 만 제가 게시 한 오류를 던집니다. 이견있는 사람? – Charan

+0

음, ATM 내 데모에서 문제를 해결 했으므로 일관성을 유지하는 것 외에 다른 제안이 없습니다. 죄송합니다. –

관련 문제