我试图添加一个新的输入字段,并在单击按钮时将焦点设置到新的输入字段。输入字段已生成,但我无法集中精力进入新的输入字段。仅在第二次单击后,才会设置焦点。有人可以解释为什么这行不通,或者我如何使它行得通吗?

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" );

最佳答案

在将焦点设置为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" );

关于javascript - 仅在渲染后才聚焦?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23078319/

10-13 23:17