0

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
    }
}
4

1 回答 1

0

editText 框有一个onActivate 回调,当元素获得焦点时触发。如果您在此时存储 editText 的当前文本值,如果新值未验证,则可以将其返回到其原始状态。

请注意,这里可能值得考虑 UX — 如果您输入了一个无效值,并且该值只是恢复,您可能没有意识到它已经这样做了。对于用户来说,这可能会非常令人困惑:看起来我输入了一个值,但没有任何反应。最好抛出一个错误,比如一个对话框,或者禁用其他控件,例如,如果参数不正确,“do the things”按钮会变灰。

于 2020-08-26T01:24:06.023 回答