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

问题描述

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的当前文本值,那么如果新值无效,则可以将其返回到其原始状态。

请注意,这里可能值得考虑UX —如果输入无效值,并且该值只是还原,则您可能不会意识到它已经这样做了。对于用户而言,这可能非常令人困惑:看起来我输入了一个值,但是什么也没有发生。最好抛出一个错误(例如对话框)或禁用其他控件,例如如果参数不正确,则会使“执行操作”按钮变灰。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...