Существует поле префикса для телефона и поле для самого телефона. Проверка должна быть динамической c. Минимальная длина рассчитывается по формуле 7-phoneprefix.length, максимальная длина равна 15 - phoneprefix.length. Не получается делать это динамически, а когда я меняю phonePrefix. Я старался не возвращать объект, и метод все равно не помогает. Буду очень признателен, если кто-нибудь мне поможет. Вот мой код:
<template v-if="currentStep === 'phone'">
<div class="q8-form-row-text">
<span class="second" v-t="{path:'requirement_phone'}"></span>
</div>
<div class="q8-form-row q8-form-row_phone-group">
<CustomSelectComponent
v-if="country"
@country="onPhonePrefixChange"
:options="countries"
v-model="country"
class="phonePrefix"
></CustomSelectComponent>
<input v-model="phone" class="q8-form__input q8-form__input-phone" :placeholder="$t('phone')"
name="phone" required="required" pattern="[0-9٠-٩]+" :minlength="getPhoneLengthValidation('min')" type="tel"
:maxlength="getPhoneLengthValidation('max')" ref="phone" @blur="$v.phone.$touch()"/>
<span v-if="$v.phone.$error" class="q8-form__input-error" v-t="{path: 'error.phoneNumberError'}"/>
</div>
<div class="q8-form-row">
<button type="submit" value="submit" class="q8-form__submit q8-form__submit__yellow q8-form__submit__yellow-gradient"
:class="{
'q8-form__submit_next': submitButtonType === 'next'
}"
v-t="{path: submitButtonType}" @click="handleSubmitButtonClick()" :disabled="isSubmitButtonDisabled()"></button>
</div>
</template>
Logi c:
public getPhoneLengthValidation(validationOption: 'min' | 'max'): number {
const size = validationOption === 'max' ? 15 : 7;
return size - this.phonePrefix.length;
}
Vue проверки:
validations: {
fullName: {
required,
minLength: minLength(2),
},
email: {
required,
email,
minLength: minLength(this.minValue),
},
phone: {
required,
numeric,
},
PrivacyPolicy: {
checked: ( (value) => value === true),
},
},