Update validation.
This commit is contained in:
parent
df97db7100
commit
59f4c0d7cc
3 changed files with 29 additions and 25 deletions
|
|
@ -1,11 +1,18 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="phonenumber-question d-flex flex-column">
|
<div class="phonenumber-question d-flex flex-column"
|
||||||
|
:class="[
|
||||||
|
(errors && errors.length) || hasError ? 'has-error' : '',
|
||||||
|
hideInput ? 'hide-input' : '',
|
||||||
|
]">
|
||||||
<label for="phone-number" class="mb-1 fw-bold" v-html="phoneNumberQuestionWidget"></label>
|
<label for="phone-number" class="mb-1 fw-bold" v-html="phoneNumberQuestionWidget"></label>
|
||||||
<input
|
<input
|
||||||
class="form-control"
|
class="form-control"
|
||||||
id="phone-number"
|
id="phone-number"
|
||||||
|
name="phone-number"
|
||||||
v-model="phoneNumber"
|
v-model="phoneNumber"
|
||||||
@input="formatPhoneNumber"
|
@input="formatPhoneNumber"
|
||||||
|
@change="handleChange"
|
||||||
|
@blur="handleChange"
|
||||||
:maxlength="phoneNumberMaxLength"
|
:maxlength="phoneNumberMaxLength"
|
||||||
pattern="[0-9\-]+"
|
pattern="[0-9\-]+"
|
||||||
:aria-required="isRequired"
|
:aria-required="isRequired"
|
||||||
|
|
@ -109,6 +116,14 @@ export default {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
async value(newValue) {
|
||||||
|
const result = await validate(newValue, this.validationRules); // do a test validation check, without triggering full validation
|
||||||
|
if (result.valid) {
|
||||||
|
this.handleChange(newValue); // trigger full validation on this field only
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,15 +20,15 @@
|
||||||
<textboxQuestion
|
<textboxQuestion
|
||||||
class="mb-4"
|
class="mb-4"
|
||||||
cmsWidgetName="emailQuestionWidget"
|
cmsWidgetName="emailQuestionWidget"
|
||||||
v-model="email"
|
v-model="customerModel.emailAddress"
|
||||||
inputId="email"
|
inputId="email"
|
||||||
validationRules="email-address-required|email-address-format" />
|
validationRules="email-address-required|email-address-format" />
|
||||||
<phoneNumberQuestion
|
<phoneNumberQuestion
|
||||||
cmsWidgetName="phoneNumberQuestionWidget"
|
cmsWidgetName="phoneNumberQuestionWidget"
|
||||||
class="mb-4"
|
class="mb-4"
|
||||||
v-model="phoneNumber"
|
v-model="customerModel.phoneNumber"
|
||||||
isRequired
|
isRequired
|
||||||
validationRules="phone-number-required" />
|
validationRules="phone-number-required|phone-number-format" />
|
||||||
<textareaQuestion
|
<textareaQuestion
|
||||||
class="mb-4"
|
class="mb-4"
|
||||||
v-model="techNotes"
|
v-model="techNotes"
|
||||||
|
|
@ -69,6 +69,13 @@ import { useField, validate } from "vee-validate";
|
||||||
defineRule("first-name-required", required(errorMessages.FIRST_NAME_REQUIRED));
|
defineRule("first-name-required", required(errorMessages.FIRST_NAME_REQUIRED));
|
||||||
defineRule("last-name-required", required(errorMessages.LAST_NAME_REQUIRED));
|
defineRule("last-name-required", required(errorMessages.LAST_NAME_REQUIRED));
|
||||||
defineRule("phone-number-required", required(errorMessages.PHONE_REQUIRED));
|
defineRule("phone-number-required", required(errorMessages.PHONE_REQUIRED));
|
||||||
|
defineRule(
|
||||||
|
"phone-number-format",
|
||||||
|
regex(
|
||||||
|
/^(?=(?:.*\d){10})(?=(?:.*-){2})[\d-]{12}$/,
|
||||||
|
errorMessages.PHONE_FORMAT
|
||||||
|
)
|
||||||
|
);
|
||||||
defineRule("email-address-required", required(errorMessages.EMAIL_ADDRESS_REQUIRED));
|
defineRule("email-address-required", required(errorMessages.EMAIL_ADDRESS_REQUIRED));
|
||||||
defineRule(
|
defineRule(
|
||||||
"email-address-format",
|
"email-address-format",
|
||||||
|
|
@ -99,20 +106,6 @@ export default {
|
||||||
vm.setCmsContent(resultMap.cmsContent);
|
vm.setCmsContent(resultMap.cmsContent);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
setup(props) {
|
|
||||||
const { errorMessage, handleBlur, handleChange, meta, validate, errors } = useField(
|
|
||||||
props.validationRules,
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
|
||||||
errorMessage,
|
|
||||||
handleBlur,
|
|
||||||
handleChange,
|
|
||||||
validate,
|
|
||||||
meta,
|
|
||||||
errors,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
techNotes: "",
|
techNotes: "",
|
||||||
|
|
@ -124,15 +117,10 @@ export default {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => ({
|
default: () => ({
|
||||||
customerQuestions: {
|
customerQuestions: {
|
||||||
addressQuestions: {
|
|
||||||
streetAddress: "",
|
|
||||||
city: "",
|
|
||||||
state: "",
|
|
||||||
zipCode: "",
|
|
||||||
},
|
|
||||||
firstName: "",
|
firstName: "",
|
||||||
lastName: "",
|
lastName: "",
|
||||||
emailAddress: "",
|
emailAddress: "",
|
||||||
|
phoneNumber: "",
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,8 @@ html {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&.textbox-question,
|
&.textbox-question,
|
||||||
&.dropdown-question {
|
&.dropdown-question,
|
||||||
|
&.phonenumber-question {
|
||||||
p {
|
p {
|
||||||
color: $red;
|
color: $red;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue