渲染后只关注焦点?

时间:2014-04-15 08:28:27

标签: javascript jquery sapui5

我正在尝试添加新的输入字段,并在点击按钮时将焦点设置到新的输入字段。生成输入字段但我无法将焦点转到新的输入字段。只有在第二次单击后才会设置焦点。有人可以解释为什么这不起作用,或者我怎么能使它起作用?

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

2 个答案:

答案 0 :(得分: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" );

答案 1 :(得分: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" );