【问题标题】:SAPUI5 Set Focus on Input FieldSAPUI5 将焦点设置在输入字段上
【发布时间】:2021-08-17 18:24:39
【问题描述】:

我有以下问题:

我有 2 个带有几个输入字段的 XML 视图,在导航到第二个视图时,焦点应该在第 5 个(ID = "RueckmeldeNr") 字段上。

我尝试了几件事,但没有任何效果.. 如果我使用 jQuery 延迟调用,焦点会在输入字段上短暂闪烁,但会立即设置为左上角的 NavBack 按钮。
我使用错误的方法还是忘记了什么?我该如何解决这个问题?

onAfterRendering : function(oEvent) {
oInputRueck = this.getView().byId("RueckmeldeNr");
//  this.getView().byId("RueckmeldeNr").focus();
//  this.getView().byId("RueckmeldeNr").$().focus();
//  jQuery.sap.delayedCall(200, this, function() {
//      //this.getView().byId("RueckmeldeNr").focus();
//      oInputRueck.focus();
//   });
//  var oFocusInfo = this.getView().byId("RueckmeldeNr").getFocusInfo()
//  this.getView().byId("RueckmeldeNr").applyFocusInfo(oFocusInfo);
    jQuery.sap.delayedCall(0, this, function() {
        oInputRueck.focus();
    });
},

希望你能帮助我!
谢谢你

【问题讨论】:

标签: javascript sapui5


【解决方案1】:

只是一个建议:

您可以将焦点设置到视图中的必填字段(或您定义它的任何位置)。

例如,在 view1 中你定义:

var oInput = new sap.m.Input({id: "inputID"})
.addEventDelegate({
    onAfterRendering: function(){
        oInput.focus();
    }
});

然后,当您调用视图时,焦点应自动设置到必填字段。

这是一个有效的 JSBIN 示例:LINK

【讨论】:

  • 这在不涉及导航的情况下非常有用。但是,当存在时,第一个可聚焦控件将在用户向后导航时获得焦点,因为通常控件不会在返回导航时重新呈现。记录在案的解决方案是make use of navigation related events such as afterShow
【解决方案2】:

答案由我自己解决。

我只是将延迟调用设置为 500 毫秒,它就起作用了。

jQuery.sap.delayedCall(500, this, function() {
    this.getView().byId("RueckmeldeNr").focus();
 });

【讨论】:

  • 它可以工作,但 delayedCall / setTimeout 的 ms 高于 0 should be avoided. 相反,请使用适当的事件,例如 afterShowafterOpenafter*、。 .. 取决于哪个控件用作容器。
  • 我绝望地尝试了这个,虽然它有点工作,但它是一个黑客。最终我通过在我的 sap.m.App 容器上设置 autoFocus = false 来正确解决这个问题。感谢@schnoedel 这个答案:stackoverflow.com/a/36390429/1499294
猜你喜欢
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多