2012-03-22 4 views
1

많은 dijit.form 요소와 dijit.Editor가 포함 된 양식이 있습니다. 양식은 처음에 서버에서 가져온 데이터로 채워집니다. 사용자는 콘텐츠를 변경 한 다음이를 다시 검색 자에게 제출할 수 있습니다. 고전적인 사용 사례.(dojo) dijit.Editor의 내용이 초기 값과 다른지 확인하십시오.

사용자가 양식을 제출하면 변경된 데이터 만 전송하면됩니다. dijit.Editor의 문제점은 사용자가 변경하지 않아도 초기 내용이 변경되는 경우가 종종 있습니다. 예를 들어

dijit.editor 입력 초기 함량이있다 :

"Gesegmenteerde rand, 115 mm~Max 13280 U/min, 80 m/sec</br>~Drooggebruik" 

및이 editorObj.get ('값') 등의 콘텐츠를 검색 할 때; 그것은이를 반환

"Gesegmenteerde rand, 115 mm~Max 13280 U/min, 80 m/sec<br />~Drooggebruik" 

당신이 </BR >가 < BR/>로 변경됩니다 볼 수 있듯이. 원래 가치가 잘못되었다는 것을 압니다. 그러나 그 이유는 소스가 싫어서 내 통제에서 벗어 났기 때문입니다.

내 질문은 : 콘텐츠가 실제로 dijit.Editor 자체가 아닌 사용자에 의해 실제로 변경되었는지 확인하는 쉬운 방법이 있습니까?

onkeypress="MyObject.setDirty(true);" 

을 그냥 MyObject.isDirty에 추적 : (에디터 마크 업에 대한)이 같은

답변

1

, 그런

var editorIsDirty = false; 
var someConnect = dojo.connect(myEditor, "onChange", this, function(newValue){ 
    if(originalSource != newValue){ 
     editorIsDirty = true; 
     return; 
    } 
    editorIsDirty = false; 
}); 

무엇인가, 당신은 아이디어를 얻을 : 당신은 단지 사용자가 무언가를 변경 한 경우 해당 시도해 볼 수도 있습니다 확인하려면 잘 경우

1

뭔가 작동합니다.

이것은 사용자가 편집기에 입력 한 다음 모든 내용을 원래대로 그대로 수정하면 값이 잘못 될 수 있습니다 (즉, 내용은 원본으로 돌아가는 반면 내용은 원본 임). 대부분의 목적에 충분합니다. 내가 IS가 추가 된 일을 결국 무엇)

+0

네, 그럴 것 같습니다. 복사 붙여 넣기를 사용하여 마우스 만 사용하여 편집 할 수 있지만 onchange 또는 무언가를 사용하여 트릭을 수행 할 수 있다고 생각합니다. 그것은 다소 해킹이지만, 나는 깨끗한 방법이 없다고 생각합니다. – koenpeters

1

편집기에 두 개의 추가 속성 : 뭔가 전혀 변경 한 경우 확인하려면 다음을 사용하는 편집기의 값 중 읽기에서

dijitObj.set('originalValue', value); 
dijitObj.set('value', value); 
dijitObj.set('uneditedValue', dijitObj.get('value')); 

:

var value = dijitObj.get('value'); 
if (dijitObj.get('uneditedValue') === value) { 
    // The value hasn't changed, so we send the original value 
    value = dijitObj.get('originalValue'); 
} 
관련 문제