@SgK100
разработчик на C#, сайтостроитель

Как запретить удаление первых символов в input?

Пробовал этот код, но он не работает.
<input
      v-model="loginForm.props.phone"
      @blur="loginForm.controls.phone.markAsDirty()"
      id="phone"
      name="phone"
      type="text"
      placeholder="+7"
    />
    <div class="error-label" v-if="loginForm.controls.phone.dirty">{{loginForm.controls.phone.errorMessage}}</div>
    <Button :disabled="!loginForm.valid" :btnText="btnText" @submit="submit"/>

import { LoginForm } from "@/form/login/loginForm";
import { IFormGroup, RxFormBuilder } from "@rxweb/reactive-forms";
import { Component, Model, Vue, Watch } from "vue-property-decorator";
import Button from "./Button.vue";

@Component({
    components: {
        Button
    },
     
})
export default class Form extends Vue {
  loginForm!: IFormGroup<LoginForm>;
  formBuilder: RxFormBuilder = new RxFormBuilder();
  btnText = 'Продолжить';
  
  constructor() {
      super();
      this.loginForm = this.formBuilder.formGroup(LoginForm) as IFormGroup<LoginForm>;
  }
  submit() {
      alert("OK");
  }

}

export class LoginForm implements ILoginForm {

    private _phone = '+7';

    get phone(): string{
        return this._phone;
    }

    @required()
    @minLength({value: 12})
    @maxLength({value: 12})
    set phone(value: string){
        if(value[0] != '+' && value[1] != '7') {
            value = '+7';
            this._phone = value;
        } else {
            this._phone = value;
        }
    }

}
  • Вопрос задан
  • 394 просмотра
Решения вопроса 2
Kozack
@Kozack Куратор тега Vue.js
Thinking about a11y
Вы страдаете хернёй :)
Если вам обязательно нужен код страны: вынесите его за пределы инпута, и оформите последний так, чтобы пользователю было понятно. Вот примеры: https://getbootstrap.com/docs/4.0/components/input...
Пусть пользователь вводит номер без кода страны, а вы этот код будете добавлять сами перед отправкой куда нужно.
Ответ написан
Комментировать
nuykon
@nuykon
Full Stack Developer
Поддерживаю Alex, а еще есть хороший готовый компонент - https://educationlink.github.io/vue-tel-input/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы