Как отобразить предупреждение vtype и не устанавливать поле недействительным? - PullRequest
2 голосов
/ 02 апреля 2019

Этот код не работает для меня, потому что я ничего не могу сделать с form.isValid (), поэтому мне нужно только показать всплывающую подсказку и цветную рамку текстового поля, чтобы показать пользователю, что я не рекомендую использовать длину> 15, но если код все равно это делает, все в порядке.

// I have some field
{
    xtype: 'textfield',
    maskRe: /[0-9.]/,
    vtype: 'imei',
    fieldLabel: 'IMEI:',
    name: 'imei',
    flex: 1
}

// validation for textfield on keypress
    imei: function (v) {
        return v.length < 16;
    },
    imeiText: 'length more then 15 symbols is not recommended'

// validation on save button click
validateForm: function (form) {
    if (!form.isValid()) {
        // don't save form
    }// can't save form because imei is not valid
}

Есть ли какой-нибудь способ для отображения всплывающей подсказки vtype, цветовой границы и не устанавливать текстовое поле недействительным?

любая помощь в этом отношении будет оценена.

1 Ответ

1 голос
/ 03 апреля 2019

вы можете использовать слушатель в вашем текстовом поле:

listeners: {
                change: function (c, newValue, oldValue) {
                    var tn = newValue.replace(/[^0-9]/g, '');
                    if (tn.length === 0) {
                        setTimeout(function () {
                            c.markInvalid('Imei length must be at least 1 symbol');
                        }, 100);

                    }
                    if (tn.length > 15) {
                        setTimeout(function () {
                            c.markInvalid('Imei length more than 15 symbols is not recommended');
                        }, 100);
                    }
                }
            },

Время ожидания истекло, поскольку базовое поле вызывает markInvalid как '' после нажатия на событие.

Посмотрите на пример на скрипке: https://fiddle.sencha.com/#view/editor&fiddle/2r9h

...