javascript - ScriptUI - 如何通过更改事件侦听器获取 EditText 旧文本?
问题描述
如ScriptUI 参考中所述,有两种方法可以实现更改监听器EditText
:
editText.onChanging = function() {
...
}
editText.addEventListener('changing', function(event) {
...
})
但是,该功能在编辑完成后触发EditText.text
,拒绝获取旧文本值的机会,因为后备选项是新值是不希望的。我正在寻找这样的东西:
editText.onChanging = function(oldValue) {
var newValue = this.text
if (!isCorrect(newValue)) {
this.text = oldValue
}
}
解决方案
editText 框有一个onActivate 回调,当元素获得焦点时触发。如果您在此时存储 editText 的当前文本值,如果新值未验证,则可以将其返回到其原始状态。
请注意,这里可能值得考虑 UX — 如果您输入了一个无效值,并且该值只是恢复,您可能没有意识到它已经这样做了。对于用户来说,这可能会非常令人困惑:看起来我输入了一个值,但没有任何反应。最好抛出一个错误,比如一个对话框,或者禁用其他控件,例如,如果参数不正确,“do the things”按钮会变灰。
推荐阅读
- android - 如何获得android设备旋转
- javascript - 如何通过网络应用程序从 Firebase 中删除数据?
- c# - 具有不同类型操作数的空合并运算符
- asp.net-web-api - 如何将 Web API 添加到 Visual Studio
- javascript - 缺少字段时如何使用 php 或 js 回显默认文本?
- date - 从 Jinja 表达式中减去日期
- python - Python RegEx 从地址中拆分街道和号码
- android - Android Activity Lifecycle 中的 Flutter configureFlutterEngine 方法
- xml - XML标记的XPath取决于文本中的位置?
- spring - 没有 maxlen 选项来限制弹簧数据反应 Redis 模板中的流大小