MaskedInput номер телефона не проходит валидацию

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Error202
Сообщения: 48
Зарегистрирован: 2017.02.21, 14:02

MaskedInput номер телефона не проходит валидацию

Сообщение Error202 »

Использую maskedinput из коробки.
Поле телефона - integer
Визуально все хорошо, но результат не проходит валидацию,
т.к. спецсимволы удаляются только после отправки...

Можно ли как-то сделать так, чтобы и поле было integer и валидацию все проходило еще при вводе?

Код: Выделить всё

<?= $form->field($model, 'phone', ['addon' => ['prepend' => ['content'=>'+']]])->widget(\yii\widgets\MaskedInput::className(), [
                'mask' => '9 (999) 999-9999',
                'clientOptions' => [
                    'removeMaskOnSubmit' => true,
                ],
            ]) ?>
Error202
Сообщения: 48
Зарегистрирован: 2017.02.21, 14:02

Re: MaskedInput номер телефона не проходит валидацию

Сообщение Error202 »

Сделал таким скриптом

Код: Выделить всё

$('#formID').on('beforeValidateAttribute', function (e) {
    var phoneElement = $('#formID').yiiActiveForm('find', 'fieldID');
    console.log(phoneElement);
    var oldValidate = phoneElement.validate;

    phoneElement.validate = function (attribute, value, messages, deferred, form) {
        value = !value.length ? value : value.match(/\d+/g).join('');
        oldValidate(attribute, value, messages, deferred, form);
    }
});
Ответить