2013-02-15 2 views
0

GXT v3 필드에 대해 살펴 보겠습니다.GXT 필드 값 업데이트 onblur

는 & B.

프레임 A가 필드 세트와 제출 버튼 SA를 가지고 두 개의 프레임이 있습니다. 제출 버튼은 프레임 A의 필드를 읽습니다. 프레임 B는 프레임 A의 필드를 읽는 제출 버튼 SB 만 가지고 있습니다.

다음 단계를 수행하십시오.

  1. 는 프레임 A에 지역에 프레임 A에 필드 F1에
  2. 를 클릭하여 데이터를 입력하거나이를 가지고 있음을 보여줍니다) 프레임 A. F1 getCell에
  3. 디버그 (의 제출 버튼을 클릭 값.

다음 대체 단계를 수행하십시오.

  1. 은 값이 없음을 보여줍니다 F1 getCell()에 프레임 B에 프레임 A에 필드 F1에
  2. 디버그 버튼을
  3. 를 클릭하여 데이터를 입력합니다.

이것은 나에게 문제가됩니다. 따라서 버튼 A를 클릭하고 버튼 S를 클릭하는 것 사이의 프레임 A의 필드의 블러 블 액션의 차이점을 알고 싶습니다.

프레임 B를 클릭했을 때 필드 F1의 onblur가 수행하지 않는 프레임 A를 클릭 할 때 필드 F1의 onblur는 어떤 작업을 수행합니까?

그 차이를 알면 그 차이를 실행할 수 있습니다.

+1

'프레임'이라고 할 때 GWT 위젯 프레임 (즉, iframe)을 의미합니까? 그렇다면 브라우저의 자체 프레임 간 포커스 문제가 발생할 수 있습니다. 다른 프레임의 프레임에 초점을 맞춤으로써 일반적인 DOM 변경 또는 흐림 이벤트가 발생하는지 확인할 가치가 있습니다. GXT 필드 (적어도 ''기반 이벤트)는 사용자로부터 값을 없애기 위해 이벤트를 종료합니다. 브라우저가 JS에 아직 말하지 않았다면, 당신에게 말할 수 없습니다. 마지막으로 한 가지 생각 : 일부 필드는 getCurrentValue()를 지원하여 dom의 데이터를 직접 읽고 구문 분석 할 수 있습니다. –

답변

0

해결책은 간단했습니다.

는 단순히 필드 값을 세척하기 전에 프레임 A.

public void focusA(){ 
    frameA.getField1().focus(); 
    frameA.getField2().focus(); 
    frameA.focus(); 
} 

프레임 B의 버튼 클릭 핸들러가 focusA를 호출해야합니다()에있는 두 개의 필드를 선택합니다.

무엇 focusA() 수행 필드가 집중되는 것을 제외하고, 필드 에디터 값으로 DOM에서 업데이 트를 유발하는 어떤 다른 분야에

  • 초점이다.
  • 이 경우 다른 임의의 필드를 트리거하여 첫 번째 필드의 업데이트를 트리거합니다.
  • 그런 다음 컨테이너에 초점을 맞춤으로써 포커스가있는 마지막 필드가 사용자의 의도하지 않은 필드 편집을 방지하기 위해 집중되는 것을 방지합니다.