Article directory
- Effect
- template
- js implementation
- The realization effect of passing the verification
Effect
Check the effect
template
<div> <el-form ref="userFormRef" :model="userForm" :rules="userFormRule" label-width="100px" :status-icon="true" > <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="Name:" prop="name"> <el-input v-model="userForm.name" placeholder="Please enter your name" clearable /> </el-form-item> </el-col> <el-col :span="12"> <el-col :span="12"> <el-form-item label="age:" prop="age"> <el-input v-model.number="userForm.age" onkeyup="value=value.replace(/[^\d] + /g,'')" placeholder="Please Enter age" clearable /> </el-form-item> </el-col> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="Phone:" prop="phone"> <el-input v-model="userForm.phone" placeholder="Please enter the phone number" clearable /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="email:" prop="email"> <el-input v-model="userForm.email" placeholder="Please enter your email address" clearable /> </el-form-item> </el-col> </el-row> <el-form-item label="Enrollment time:" required> <el-col :span="11"> <el-form-item prop="date"> <el-date-picker v-model="userForm.date" value-format="yyyy-MM-dd" type="date" placeholder="Select Date" style="width: 100%;" /> </el-form-item> </el-col> <el-col :span="2" style="text-align:center"> - </el-col> <el-col :span="11"> <el-form-item prop="time"> <el-time-picker v-model="userForm.time" placeholder="Select Time" style="width: 100%;" /> </el-form-item> </el-col> </el-form-item> <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="Gender:" prop="gender"> <el-radio-group v-model="userForm.gender"> <el-radio label="0"> male </el-radio> <el-radio label="1"> female </el-radio> </el-radio-group> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="weight:" prop="weight"> <el-input v-model="userForm.weight" oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="Please enter your weight" clearable > <template slot="append"> kg </template> </el-input> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="state:" prop="state"> <el-switch v-model="userForm. state" /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="Grade:" prop="grade"> <el-select v-model="userForm.grade" placeholder="Select Grade" style="width:100%" clearable> <el-option label="First Grade" value="one" /> <el-option label="Second Grade" value="two" /> </el-select> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="District of Birth:" prop="district"> <el-cascader v-model="userForm.district" :options="options" :props="{ expandTrigger: 'hover' }" @change="handleChange" /> </el-form-item> </el-col> </el-row> <el-form-item label="Personal specialty:" prop="hobby"> <el-checkbox-group v-model="userForm.hobby"> <el-checkbox label="0" name="hobby"> draw </el-checkbox> <el-checkbox label="1" name="hobby"> play basketball </el-checkbox> <el-checkbox label="2" name="hobby"> play the piano </el-checkbox> <el-checkbox label="3" name="hobby"> calligraphy </el-checkbox> </el-checkbox-group> </el-form-item> <el-form-item label="Remarks:" prop="desc"> <el-input v-model="userForm.desc" placeholder="Please fill in the remarks" type="textarea" maxlength="50" show-word-limit :rows="4" /> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm()"> submit </el-button> <el-button @click="resetForm()"> reset </el-button> </el-form-item> </el-form> </div>
js implementation
data () {<!-- --> let cheapMobile = (rule, value, cb) => {<!-- --> // The mobile phone number generally starts with "13" at the minimum const regMobile = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0- 35-9])\d{8}$/ if (regMobile.test(value)) {<!-- --> return cb() } cb(new Error('Please enter a valid mobile phone number!')) } let checkEmail = (rule, value, callback) => {<!-- --> const mailReg = /^([a-zA-Z0-9_-]) + @([a-zA-Z0-9_-]) + (.[a-zA-Z0-9_-]) + / setTimeout(() => {<!-- --> if (mailReg.test(value)) {<!-- --> callback() } else {<!-- --> callback(new Error('Please enter the correct email format')) } }, 100) } return {<!-- --> userForm: {<!-- --> name: '', age: 0, // limit the input to 0 and positive integers phone: '', email: '', grade: '', district: [], // The ID of the third level weight: '0.00', // integer or two decimal places date: '', time: '', state: false, gender: '', hobby: [], desc: '' }, options: [ {<!-- --> value: '1', label: 'Shaanxi Province', children: [ {<!-- --> value: '1-1', label: 'Ankang City', children: [ {<!-- --> value: '1-1-1', label: 'Hanbin District' }, {<!-- --> value: '1-1-2', label: 'Shiquan' } ] }, {<!-- --> value: '1-2', label: 'Xi'an City', children: [ {<!-- --> value: '1-2-1', label: 'Chang'an District' }, {<!-- --> value: '1-2-2', label: 'Yanta District' } ] } ] }, {<!-- --> value: '2', label: 'Henan', children: [ {<!-- --> value: '2-1', label: 'Luoyang' }, {<!-- --> value: '2-2', label: 'Pingdingshan' } ] } ], userFormRule: {<!-- --> name: [ {<!-- --> required: true, message: 'Please enter your name', trigger: 'blur' }, {<!-- --> min: 3, max: 5, message: 'length between 3 and 5 characters', trigger: 'blur' } ], age: [{<!-- --> required: true, message: 'Please enter your age', trigger: 'blur' }], phone: [ {<!-- --> required: true, message: 'The phone number is required, please enter the phone number!', trigger: 'blur' }, {<!-- --> validator: cheackMobile, trigger: 'blur' } ], email: [ {<!-- --> required: true, message: 'Email is required, please enter your email!', trigger: 'blur' }, {<!-- --> validator: checkEmail, trigger: 'blur' } ], grade: [{<!-- --> required: true, message: 'Please select a grade', trigger: 'change' }], district: [{<!-- --> required: true, message: 'Please select the birth area', trigger: 'change' }], weight: [ {<!-- --> required: true, trigger: 'blur', message: 'Please enter weight' }, {<!-- --> pattern: /(^[1-9]([0-9] + )?(\.[0-9]{1,2})?$)|(^(0 ){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, message: 'Please enter the correct format, two decimal places are allowed\ ' } ], date: [{<!-- --> required: true, message: 'Please select a date', trigger: 'change' }], time: [{<!-- --> required: true, message: 'Please select a time', trigger: 'change' }], gender: [{<!-- --> required: true, message: 'Please select gender', trigger: 'change' }], hobby: [{<!-- --> type: 'array', required: true, message: 'Please choose at least one hobby', trigger: 'change' }], desc: [{<!-- --> required: true, message: 'Please fill in the remarks', trigger: 'blur' }] } } }, methods: {<!-- --> // submit Form submitForm () {<!-- --> this.$refs['userFormRef'].validate(valid => {<!-- --> if (valid) {<!-- --> console.log('valid success!!') // The data that may be submitted to the backend, this call interface console.log('userForm', this.userForm) } else {<!-- --> console.log('valid error!!') return false } }) }, //reset form resetForm () {<!-- --> this.$refs['userFormRef'].resetFields() }, // The event triggered by the change of the cascade selector, print out the selected value handleChange (value) {<!-- --> // The value value is finally an array. For example, if the user selects 'Shaanxi Province->Ankang City->Hanbin District', the printed value value is: ['1','1-1', '1-1-1'] console. log(value) } }