EditBox输入过程中可以改变值吗

  • Creator 版本:3.8.3

  • 目标平台:web

监听editbox的text changed事件,在事件内修改text结果无效

/*

 * 验证手机号格式(输入)

 */

onEditingDidChangeMobile(text: string,editBox:EditBox) {

    console.log("onEditingDidChangeMobile",text);

    const pattern = /\D/g;  // 匹配所有非数字字符,并设置全局匹配模式"g"

    text = text.replace(pattern, '');

    if (text && text.charAt(0) === '0') {

        text = text.substring(1);

    }

    console.log(`begin ${editBox.string}  ,text ${text}`);

    editBox.string = text

    console.log(`end ${editBox.string}`);

测试的时候输入01234 打印
onEditingDidChangeMobile 0
begin 0 ,text
end
onEditingDidChangeMobile 01
begin 01 ,text 1
end 1
onEditingDidChangeMobile 012
begin 012 ,text 12
end 12
onEditingDidChangeMobile 0123
begin 0123 ,text 123
end 123
onEditingDidChangeMobile 01234
begin 01234 ,text 1234
end 1234

请问如何做可以使得在输入过程中修改输入值?

输入过程中和输入结束后其实是不同控件,输入过程中用的应该html的输入框,你需要看下源码edit-box.ts,修改这个输入框的内容,官方好像没有public接口,editBox[’_impl’],这样可以获取

可以添加 监听

感谢,顺着_impl 找到一个私有方法 设置之后刷新一下就可以了

editBox.string = text
let impl:any = editBox[’_impl’]
impl._updateStyleSheet();