2017-10-13 126 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

還應避免ms高於'0'的'delayedCall' /'setTimeout'。相反,利用適當的事件如['afterShow'](https://ui5.sap.com/#/api/sap.m.NavContainerChild/events/AfterShow),['afterOpen'](https://開頭ui5.sap.com/#/api/sap.m.Dialog/events/afterOpen),'*之後',...取決於哪個控件用作容器。例如。如果您有NavContainer:https://stackoverflow.com/a/48559689/5846045 – boghyon