Element Plus — это набор библиотек компонентов на основе Vue 3. Он предоставляет множество компонентов, помогающих разработчикам быстро создавать современные веб-приложения. В этой статье подробно описано, как выполнить проверку формы в Element Plus, объясняя использование каждой части на конкретных примерах.
в использовании Element Plus Перед этим его необходимо сначала установить. Предполагая, что у вас уже есть Vue 3 проект, вы можете пройти npm или yarn Установить Элемент Плюс:
npm install element-plus
или ВОЗ:
yarn add element-plus
После завершения установки Element Plus появится в файле записи существующего проекта:
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'
const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')
Сначала создайте базовую структуру формы, используя компоненты, предоставляемые Element Plus:
<template>
<el-form :model="form" ref="formRef" :rules="rules" label-width="120px">
<el-form-item метка="имя пользователя" prop="username">
<el-input v-model="form.username"></el-input>
</el-form-item>
<el-form-item метка="электронная почта" prop="email">
<el-input v-model="form.email"></el-input>
</el-form-item>
<el-form-item метка="пароль" prop="password">
<el-input type="password" v-model="form.password"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">представлять на рассмотрение</el-button>
<el-button @click="resetForm">перезагрузить</el-button>
</el-form-item>
</el-form>
</template>
<script>
import { reactive, ref } from 'vue'
export default {
setup() {
const form = reactive({
username: '',
email: '',
password: ''
})
const rules = {
username: [
{ required: true, message: «Пожалуйста, введите имя пользователя», trigger: 'blur' }
],
email: [
{ required: true, message: «Пожалуйста, введите свой адрес электронной почты», trigger: 'blur' },
{ type: 'email', message: «Пожалуйста, введите правильный адрес электронной почты», trigger: 'blur' }
],
password: [
{ required: true, message: «Пожалуйста, введите пароль», trigger: 'blur' },
{ min: 6, message: «Длина пароля не может быть меньше 6 символов», trigger: 'blur' }
]
}
const formRef = ref(null)
const submitForm = () => {
formRef.value.validate((valid) => {
if (valid) {
alert('Отправка прошла успешно!')
} else {
console.log('Отправка не удалась!')
return false
}
})
}
const resetForm = () => {
formRef.value.resetFields()
}
return {
form,
rules,
formRef,
submitForm,
resetForm
}
}
}
</script>
template
):<el-form>
:Контейнер для всей формы,обязательность model
отнести к form
объект,используется для双向数据обязательность。ref
Используется для ссылки на форму в методе существования.,rules
для установки Правил валидации,label-width
Установите ширину метки формы.<el-form-item>
:контейнер элементов формы。label
属性используется для设置表单项的标签,prop
Свойства используются для связывания Правил. валидации。<el-input>
:Компонент поля ввода,использовать v-model
Привязать данные.<el-button>
:компонент кнопки,Используется для отправки и сброса формы.script
):reactive
:创建响应式объект form
,Используется для хранения данных формы.ref
:используется для创建对表单实例的引用 formRef
。rules
:Форма магазина Правила валидации。submitForm
:представлять на рассмотрение表单时触发,вызов validate
Метод проверяет всю форму.resetForm
:Сбросьте форму, сбросьте все значения полей к исходным значениям и удалите результаты проверки.существовать rules
В объекте каждое поле соответствует массиву, и массив содержит одно или несколько Правил. валидацииобъект。каждый Правила Объект валидации может содержать следующие свойства:
required
: Требуется ли это?message
: Подсказка в случае неудачной проверки.trigger
: Тип события, запускающего проверку, который может быть blur
или change
。type
: Тип данных, подлежащий проверке, который может быть string
、number
、boolean
、method
、regexp
、integer
、float
、array
、object
、enum
、date
、url
、hex
、email
。min
и max
: Ограничьте минимальную и максимальную длину ввода (применяется только к string
и array
тип).validator
: Пользовательская функция проверки.иногда встроенные Правила валидации могут быть не в состоянии удовлетворить спрос, в этом случае вы можете использовать Пользовательский валидатор。Пользовательский валидаторэто функция,принимает три параметра:rule
,value
,и callback
。
Вот пример того, как добавить Пользовательский валидатор, чтобы проверить, занято ли имя пользователя:
const checkUsername = (rule, value, callback) => {
if (!value) {
return callback(new Ошибка («Пожалуйста, введите имя пользователя»))
}
// Имитация асинхронной проверки
setTimeout(() => {
if (value === 'admin') {
callback(new Ошибка («Имя пользователя уже занято»))
} else {
callback()
}
}, 1000)
}
const rules = {
username: [
{ validator: checkUsername, trigger: 'blur' }
]
}
Element Plus предоставляет несколько методов для управления проверкой формы:
validate(callback)
: Проверьте всю форму。callback
встречасуществовать验证完成后被вызов,и получает логический параметр,Указывает, пройдена ли проверка.validateField(prop, callback)
: Проверка поля。prop
Имя атрибута поля,callback
Это функция обратного вызова после завершения проверки.resetFields()
: Сбросьте форму, сбросьте все значения полей к исходным значениям и удалите результаты проверки.clearValidate(props)
: 移除表单项的校验结果。props
Это массив, состоящий из атрибутов полей, которые необходимо удалить из проверки. Если не передать, результаты проверки всех полей будут удалены.Вот примеры таких методов:
const submitForm = () => {
formRef.value.validate((valid) => {
if (valid) {
alert('Отправка прошла успешно!')
} else {
console.log('Отправка не удалась!')
return false
}
})
}
const resetForm = () => {
formRef.value.resetFields()
}
const validateUsername = () => {
formRef.value.validateField('username', (valid) => {
if (valid) {
alert('Проверка имени пользователя пройдена')
} else {
console.log('Проверка имени пользователя не удалась')
}
})
}
const clearUsernameValidation = () => {
formRef.value.clearValidate(['username'])
}
Вот полный пример, показывающий, как реализовать форму с проверкой формы с помощью Element Plus:
<template>
<el-form :model="form" ref="formRef" :rules="rules" label-width="120px">
<el-form-item метка="имя пользователя" prop="username">
<el-input v-model="form.username"></el-input>
</el-form-item>
<el-form-item метка="электронная почта" prop="email">
<el-input v-model="form.email"></el-input>
</el-form-item>
<el-form-item метка="пароль" prop="password">
<el-input type="password" v-model="form.password"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">представлять на рассмотрение</el-button>
<el-button @click="resetForm">перезагрузить</el-button>
</el-form-item>
</el-form>
</template>
<script>
import { reactive, ref } from 'vue'
export default {
setup() {
const form = reactive({
username: '',
email: '',
password: ''
})
const checkUsername = (rule, value, callback) => {
if (!value) {
return callback(new Ошибка («Пожалуйста, введите имя пользователя»))
}
// Имитация асинхронной проверки
setTimeout(() => {
if (value === 'admin') {
callback(new Ошибка («Имя пользователя уже занято»))
} else {
callback()
}
}, 1000)
}
const rules = {
username: [
{ validator: checkUsername, trigger: 'blur' }
],
email: [
{ required: true, message: «Пожалуйста, введите свой адрес электронной почты», trigger: 'blur' },
{ type: 'email', message: «Пожалуйста, введите правильный адрес электронной почты», trigger: 'blur' }
],
password: [
{ required: true, message: «Пожалуйста, введите пароль», trigger: 'blur' },
{ min: 6, message: «Длина пароля не может быть меньше 6 символов», trigger: 'blur' }
]
}
const formRef = ref(null)
const submitForm = () => {
formRef.value.validate((valid) => {
if (valid) {
alert('Отправка прошла успешно!')
} else {
console.log('Отправка не удалась!')
return false
}
})
}
const resetForm = () => {
formRef.value.resetFields()
}
return {
form,
rules,
formRef,
submitForm,
resetForm
}
}
}
</script>
Element Plus Предоставляет мощные и гибкие функции проверки форм для удовлетворения различных сложных потребностей в проверке форм. Используя встроенные Правила валидациии Пользовательский валидатор, который позволяет добиться точного контроля элементов формы. Я надеюсь, что эта статья поможет вам лучше понять и использовать Element Plus функция проверки формы.