focus - 为输入字段注册自定义焦点事件处理程序的最佳实践
问题描述
sap.m.Input
遗憾的是,我没有找到任何sap.m.TextArea
可以在 XML 视图中注册处理程序的焦点事件。
您的最佳实践是什么,例如,如果您有近 100 个字段并且其中大多数应该处理焦点事件,以便自动选择输入字段中的文本?
通常,我会尽量避免focusin
在每个输入字段的控制器中注册处理程序(也是循环),但似乎没有其他可用的可能性不是吗?
我想要的是一种可能性,当我使用键盘浏览带有输入字段的表格时,每次按tab或updown箭头键跳转到下一个输入字段时,都应该选择输入字段的全部内容。
例子:
- 打开此表示例。
- 点击Edit。
- 选项卡时,它会自动选择文本。但它不适用于updown箭头键和
sap.m.Input
类。
解决方案
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
仅支持输入控件的、
Text
和Url
类型。Tel
Password
由于我们的目标是选择输入字段(不是范围)内的所有文本,而不管类型如何,因此可以使用api代替。domElement.select()
推荐阅读
- mongodb - 如何将 Spark 上下文连接到多个 Mongo 集合?(斯卡拉)
- laravel-8 - Livewire 使用 yield 和 section 拆分布局中的组件
- hive - 如何使用 Hive MACRO 减少样板文件
- python - 如何将 TFRecord 数据集映射到 pbtxt 文件中的标签?
- php - 用于支付流的 Paypal PHP REST API
- flutter - 如何按一个按钮填充文本字段?
- swift - VNRectangle Bounding Box 在 AVFoundation Frame 中的 x 轴上偏移不正确
- javascript - 如何过滤 JavaScript 对象数组?
- ios - 使 UITextView 在 UITableView 中可点击
- python - 如何在 Python 中将 asyncio 与线程一起使用是 Method threading.Timer