Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅在渲染后聚焦?_Javascript_Jquery_Sapui5 - Fatal编程技术网

Javascript 仅在渲染后聚焦?

Javascript 仅在渲染后聚焦?,javascript,jquery,sapui5,Javascript,Jquery,Sapui5,我正在尝试添加一个新的输入字段,并在单击按钮时将焦点设置到新的输入字段。输入字段已生成,但我无法获得焦点以转到新的输入字段。只有在第二次单击后,才会设置焦点。有人能解释一下为什么这不起作用,或者我怎样才能让它起作用 var oInp1 = new sap.m.Input({value:"123",width:"50%"}); oInp1.placeAt( "content" ); var oBtn1 = sap.m.Button( { text:"Next", press:func

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

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

谢谢你抽出时间。结果仍然是一样的。单击按钮两次后,焦点仅设置为第二个输入字段。我期待着点击按钮,并有一个新的重点与它的输入字段。工作对我来说也是。到现在为止,你听说过什么合适的方法吗?
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" );