Anonymous
Почему моя функция проверки ввода и маска для нее не работает?
Сообщение
Anonymous » 25 апр 2025, 15:48
У меня есть проблема. Существует родительская компонентная форма/index.vue, которая содержит вход для номера телефона, он связан с V-моделью. Но по какой -то причине проверка маски с использованием функции на входе родительских компонентов не работает, только в мозилле
вход компонента формы
Код: Выделить всё
`
connects to the field
`const form_data = reactive({
fio: "",
class: "",
number: "",
email: "",
direction: "",
});
mainpageformnumberInput :
Код: Выделить всё
const props = defineProps({
error: {
type: Boolean,
},
});
const emits = defineEmits(["update:error"]);
const model = defineModel();
const phoneNumber = ref("");
const formatPhone = (event) => {
let numbers = event.target.value.replace(/\D/g, "");
if (numbers.length > 0 && numbers[0] !== "7") {
numbers = "7" + numbers.substring(1);
}
numbers = numbers.substring(0, 11);
phoneNumber.value = numbers.length > 0 ? "+" + numbers : "";
let formatted = "+7";
if (numbers.length > 1) {
formatted += " (" + numbers.substring(1, 4);
}
if (numbers.length > 4) {
formatted += ") " + numbers.substring(4, 7);
}
if (numbers.length > 7) {
formatted += " " + numbers.substring(7, 9);
}
if (numbers.length > 9) {
formatted += "-" + numbers.substring(9, 11);
}
model.value = formatted;
};
const getPrefix = (e) => {
if (e.target.value.length === 0) {
model.value = "+7";
}
};
const removePrefix = (e) => {
if (e.target.value === "+7") {
model.value = "";
}
};
пользовательский ввод :
Код: Выделить всё
{{ text }}
const emits = defineEmits(["blur", "focus", "input", "update:error"]);
const props = defineProps({
text: String,
placeholder: {
type: String,
required: false,
},
type: {
type: String,
required: false,
default: "text",
},
error: {
type: Boolean,
default: false,
},
});
const model = defineModel();
const isDirty = ref(false);
const showError = computed(() => {
return props.error && model.value.length > 0;
});
function blurHandler(event) {
isDirty.value = true;
emits("blur", event);
}
function focusHandler(event) {
emits("focus", event);
}
function inputHandler(event) {
emits("input", event);
}
watch(model, (newVal) => {
if (newVal.length === 0 && props.error) {
emits("update:error", false);
}
});
Я искал много информации по этому поводу, прочитал документацию, спросил чат GPT и попытался использовать кучу реквизитов и излуч>
Подробнее здесь:
https://stackoverflow.com/questions/795 ... ot-working
1745585287
Anonymous
У меня есть проблема. Существует родительская компонентная форма/index.vue, которая содержит вход для номера телефона, он связан с V-моделью. Но по какой -то причине проверка маски с использованием функции на входе родительских компонентов не работает, только в мозилле [b] вход компонента формы [/b] [code]` connects to the field `const form_data = reactive({ fio: "", class: "", number: "", email: "", direction: "", }); [/code] [b] mainpageformnumberInput [/b]: [code] const props = defineProps({ error: { type: Boolean, }, }); const emits = defineEmits(["update:error"]); const model = defineModel(); const phoneNumber = ref(""); const formatPhone = (event) => { let numbers = event.target.value.replace(/\D/g, ""); if (numbers.length > 0 && numbers[0] !== "7") { numbers = "7" + numbers.substring(1); } numbers = numbers.substring(0, 11); phoneNumber.value = numbers.length > 0 ? "+" + numbers : ""; let formatted = "+7"; if (numbers.length > 1) { formatted += " (" + numbers.substring(1, 4); } if (numbers.length > 4) { formatted += ") " + numbers.substring(4, 7); } if (numbers.length > 7) { formatted += " " + numbers.substring(7, 9); } if (numbers.length > 9) { formatted += "-" + numbers.substring(9, 11); } model.value = formatted; }; const getPrefix = (e) => { if (e.target.value.length === 0) { model.value = "+7"; } }; const removePrefix = (e) => { if (e.target.value === "+7") { model.value = ""; } }; [/code] [b] пользовательский ввод [/b]: [code] {{ text }} const emits = defineEmits(["blur", "focus", "input", "update:error"]); const props = defineProps({ text: String, placeholder: { type: String, required: false, }, type: { type: String, required: false, default: "text", }, error: { type: Boolean, default: false, }, }); const model = defineModel(); const isDirty = ref(false); const showError = computed(() => { return props.error && model.value.length > 0; }); function blurHandler(event) { isDirty.value = true; emits("blur", event); } function focusHandler(event) { emits("focus", event); } function inputHandler(event) { emits("input", event); } watch(model, (newVal) => { if (newVal.length === 0 && props.error) { emits("update:error", false); } }); [/code] Я искал много информации по этому поводу, прочитал документацию, спросил чат GPT и попытался использовать кучу реквизитов и излуч> Подробнее здесь: [url]https://stackoverflow.com/questions/79592542/why-my-input-validation-function-and-mask-for-it-are-not-working[/url]