首页 > 解决方案 > 为输入字段注册自定义焦点事件处理程序的最佳实践

问题描述

sap.m.Input遗憾的是,我没有找到任何sap.m.TextArea可以在 XML 视图中注册处理程序的焦点事件。

您的最佳实践是什么,例如,如果您有近 100 个字段并且其中大多数应该处理焦点事件,以便自动选择输入字段中的文本

通常,我会尽量避免focusin在每个输入字段的控制器中注册处理程序(也是循环),但似乎没有其他可用的可能性不是吗?

我想要的是一种可能性,当我使用键盘浏览带有输入字段的表格时,每次按tabupdown箭头键跳转到下一个输入字段时,都应该选择输入字段的全部内容。

例子:

  1. 打开此表示例
  2. 点击Edit
  3. 选项卡时,它会自动选择文本。但它不适用于updown箭头键和sap.m.Input类。

标签: focussapui5

解决方案


sap.m.Input这是一个选择焦点文本的扩展的工作示例: https ://embed.plnkr.co/98BIbMEIujbzBXqU

Input.extend("demo.control.Input", {
  onfocusin: function() {
    if (typeof Input.prototype.onfocusin == "function") {
      Input.prototype.onfocusin.apply(this, arguments);
    }
    this.getDomRef("inner").select();
  },
  // ...
});

注意: sap.m.InputBase提供 API selectText(iStart, iEnd)。但是,该 API 不支持具有Number根据HTML 规范以及 API 参考的类型的输入控件:

selectText

仅支持输入控件的、TextUrl类型。TelPassword

由于我们的目标是选择输入字段(不是范围)内的所有文本,而不管类型如何,因此可以使用api代替。domElement.select()


推荐阅读