2014-04-15 89 views
1

我想添加一個新的輸入字段並將焦點設置到新的輸入字段上,單擊一個按鈕。輸入字段已生成,但我無法獲得轉到新輸入字段的焦點。只有在第二次點擊後,焦點纔會被設置。有人可以解釋爲什麼這不起作用,或者我可以如何使它工作?只在渲染後關注?

var oInp1 = new sap.m.Input({value:"123",width:"50%"}); 
oInp1.placeAt("content"); 

var oBtn1 = sap.m.Button({ 
    text:"Next", 
    press:function(){ 
     oInp2.setVisible(true); 
     oInp2.focus(); 
    } 
}); 

oBtn1.placeAt("content"); 

var oInp2 = new sap.m.Input({value:"abc", width:"50%", visible:false }); 
oInp2.placeAt("content"); 

回答

0
var oInp1 = new sap.m.Input({value:"123",width:"50%"}); 
oInp1.placeAt("content"); 




var oBtn1 = sap.m.Button({ 
    text:"Next", 
    press:function(){ 
    var oInp2 = new sap.m.Input({value:"abc"}); 
     oInp2.placeAt("content"); 
     oInp2.focus(); 
    } 
}); 

oBtn1.placeAt("content"); 
+0

謝謝你的時間。結果仍然是一樣的。單擊按鈕兩次後,焦點僅設置爲第二個輸入字段。我正在尋找點擊按鈕,並有一個新的輸入字段與焦點。 – JackSturges

1

在設置上INP2一些背景渲染將採取重點關注的焦點。這是一個骯髒的解決方法,應該工作。您只需等待200毫秒(通常所有渲染都應完成),然後請求重點關注inp2。

var oInp1 = new sap.m.Input({value:"123",width:"50%"}); 
oInp1.placeAt("content"); 

var oBtn1 = sap.m.Button({ 
    text:"Next", 
    press:function(){ 
    var oInp2 = new sap.m.Input({value:"abc"}); 
     oInp2.placeAt("content"); 

     jQuery.sap.delayedCall(200, this, function() { 
     oInp2.focus(); 
     }); 

    } 
}); 

oBtn1.placeAt("content"); 
+0

也爲我工作。你有沒有聽說現在有任何適當的方式來做到這一點? – michaelklopf