Javascript Sencha ExtJS:如何防止光标在编辑时离开电话号码字段中的当前位置?

Javascript Sencha ExtJS:如何防止光标在编辑时离开电话号码字段中的当前位置?,javascript,extjs,sencha-touch,textfield,phone-number,Javascript,Extjs,Sencha Touch,Textfield,Phone Number,光标在退格1次后自动移动到电话号码的末尾,它应该保留在括号中,因为用户可能只想编辑区号。(包括代码和图像…请注意,没有10个代表可以发布图片,:/) 以下是文本字段的代码(仅按钮;如果需要更多上下文,请告知) 这是插件/扩展信息。我猜onChange()函数就是罪魁祸首。请指导我如何解决这个问题。完整的解决方案意味着,如果在保存之前删除字段中的任何数字,光标位置将保持不变 Ext.define('Silver.ux.plugin.FormatPhoneNumber', { extend:

光标在退格1次后自动移动到电话号码的末尾,它应该保留在括号中,因为用户可能只想编辑区号。(包括代码和图像…请注意,没有10个代表可以发布图片,:/)

以下是文本字段的代码(仅按钮;如果需要更多上下文,请告知)

这是插件/扩展信息。我猜onChange()函数就是罪魁祸首。请指导我如何解决这个问题。完整的解决方案意味着,如果在保存之前删除字段中的任何数字,光标位置将保持不变

Ext.define('Silver.ux.plugin.FormatPhoneNumber', {
    extend: 'Ext.form.TextField',

    init: function (c) {
        // Format a phone number
        Ext.apply(Ext.util.Format, {
            phoneNumber: function (value) {
                var phoneNumber = value.replace(/\./g, '').replace(/-/g, '').replace(/[^0-9]/g, '');
                //US phone numbers
                if (phoneNumber !== '' && phoneNumber.length === 10 && UI_CULTURE === 'en-US') {
                    return '(' + phoneNumber.substr(0, 3) + ') ' + phoneNumber.substr(3, 3) + '-' + phoneNumber.substr(6, 4);
                } else {
                    return value;
                }
            }
        });

        // Validate a phone number
        Ext.apply(Ext.form.VTypes, {
            'phoneText': (UI_CULTURE === 'en-US' ?
                'Not a valid phone number. Must be in the format (555) 555-5555.' :
                'Not a valid phone number. Must be a number 0-9.'),
            'phoneMask': /[\-\+0-9\(\)\s\.Ext]/,
            'phoneRe': (UI_CULTURE === 'en-US' ?
                /^(\({1}[0-9]{3}\){1}\s{1})([0-9]{3}[\-]{1}[0-9]{4})$|^(((\+44)? ?(\(0\))? ?)|(0))( ?[0-9]{3,4}){3}$|^Ext\. [0-9]+$/ :
                /^[0-9\s]+$/),
            'phone': function (v) {
                return this.phoneRe.test(v);
            }
        });

        c.on('change', 'onChange', this);
    },

    onChange: function (c) {
        c.setValue(Ext.util.Format.phoneNumber(c.getValue()));
    }
}); 

我已经弄明白了。通过删除此段修复了此问题:

onChange:  function (c) {
    c.setValue(Ext.util.Format.phoneNumber(c.getValue()));
}
该字段仍将验证该数字,直到它符合格式标准。在匹配之前无法保存:D

onChange:  function (c) {
    c.setValue(Ext.util.Format.phoneNumber(c.getValue()));
}