ScriptUI - 如何通过更改事件侦听器获取 EditText 旧文本?

ScriptUI - How to get EditText old text with changing event listener?

ScriptUI reference 中所述,有两种方法可以在 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 callback,当元素获得焦点时触发。如果此时存储 editText 的当前文本值,如果新值不生效,它可以返回到其原始状态。

请注意,这里可能值得考虑用户体验——如果您输入了一个无效值,而该值刚刚恢复,您可能没有意识到它已经这样做了。对于用户来说,这可能非常令人困惑:看起来我输入了一个值,但没有任何反应。抛出错误(例如对话框)或禁用其他控件(例如如果参数不正确,“执行操作”按钮将变灰。