首页 > 解决方案 > 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
    }
}

标签: javascriptadobe-illustratorextendscriptadobe-scriptui

解决方案


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

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


推荐阅读