2017-10-13 8 views
0

SAPUI5 응용 프로그램에서는 포커스가없는 페이지 헤더에 입력 필드가 있습니다.SAPUI5 응용 프로그램의 입력 필드에 포커스가 없습니다.

더 자세히 설명합니다. 사용자가 일부 값을 입력하는 초기보기가 있습니다. 값을 승인하면 응용 프로그램은 다음보기로 이동합니다.

그래서 우리는 입력 필드에 포커스를 설정하려고합니다. 이를 달성하기 위해 다음 코드를 사용했습니다.

jQuery.sap.delayedCall(500, this, function() { 
    this.getView().byId("idInput").focus(); 
}); 

이것은 우리의 초기보기에 잘 작동합니다. 다음보기에서 포커스가 올바르게 설정되었지만 손실 된 바로 다음 순간을 볼 수 있습니다.

입력란에 포커스를 유지하려면 어떻게해야합니까?

은 참조 : 도움이 무엇 는 SAPUI5 Set Focus on Input Field

+0

다음 초점은 무엇 이었습니까? 입력에 의해 잃어 버린 페이지의 어떤 요소가 포커스를 받았다는 뜻입니까? 나는 sap.m.Page 컨트롤의 모든 내용을 "뒤로"버튼으로 배치하고이 "뒤로"버튼은 기본적으로 포커스 된 상태를받습니다. –

+0

처음에는 초점이 어디로 가고 있는지 알 수 없었습니다. 그리고 그것은 헤더의 버튼이 아니 었습니다. 숨겨진 마스터 페이지가있는 SplitApp입니다. 'document.activeElement'를 사용하여 포커스가 마스터 페이지의 목록으로 점프한다는 것을 알았습니다. –

+0

실험과 마찬가지로 시간 제한을 늘리면 초점이 설정됩니까? –

답변

0

지연을 증가했다. onAfterRendering을 사용하면 처음으로 두 번째보기로 이동합니다.

+0

예, 포커스를 설정합니다. onAfterRendering은 뷰가 렌더링 될 때 한 번만 작동합니다. 그러나 사용자가 다시 탐색 할 때보기가 다시 렌더링되지 않으므로 포커스는 다시 설정되지 않습니다. – boghyon

+0

또한'delayedCall' /'setTimeout'을'0'보다 높은 ms 값으로 사용하지 마십시오. 대신 [afterShow'] (https://ui5.sap.com/#/api/sap.m.NavContainerChild/events/AfterShow), ['afterOpen'] (https : //) 등과 같은 적절한 이벤트를 사용하십시오. ui5.sap.com/#/api/sap.m.Dialog/events/afterOpen),'after *', ... 컨테이너로 사용되는 컨트롤에 따라 다릅니다. 예 : NavContainer가있는 경우 : https://stackoverflow.com/a/48559689/5846045 – boghyon