Commit c3a9f3895b0df00111b5233489c54bca08ec8640
1 parent
8a83e7c4
update Input
update Input
Showing
3 changed files
with
93 additions
and
0 deletions
Show diff stats
src/components/input/input.vue
| ... | ... | @@ -12,6 +12,7 @@ |
| 12 | 12 | :readonly="readonly" |
| 13 | 13 | :name="name" |
| 14 | 14 | v-model="value" |
| 15 | + :number="number" | |
| 15 | 16 | @keyup.enter="handleEnter" |
| 16 | 17 | @focus="handleFocus" |
| 17 | 18 | @blur="handleBlur" |
| ... | ... | @@ -87,6 +88,10 @@ |
| 87 | 88 | }, |
| 88 | 89 | name: { |
| 89 | 90 | type: String |
| 91 | + }, | |
| 92 | + number: { | |
| 93 | + type: Boolean, | |
| 94 | + default: false | |
| 90 | 95 | } |
| 91 | 96 | }, |
| 92 | 97 | data () { | ... | ... |
src/styles/components/form.less
test/routers/form.vue
| 1 | 1 | <template> |
| 2 | 2 | <div style="width: 600px"> |
| 3 | + <i-form v-ref:form-custom :model="formCustom" :rules="ruleCustom" :label-width="80"> | |
| 4 | + <Form-item label="密码" prop="passwd"> | |
| 5 | + <i-input type="password" :value.sync="formCustom.passwd"></i-input> | |
| 6 | + </Form-item> | |
| 7 | + <Form-item label="确认密码" prop="passwdCheck"> | |
| 8 | + <i-input type="password" :value.sync="formCustom.passwdCheck"></i-input> | |
| 9 | + </Form-item> | |
| 10 | + <Form-item label="年龄" prop="age"> | |
| 11 | + <i-input type="text" :value.sync="formCustom.age"></i-input> | |
| 12 | + </Form-item> | |
| 13 | + <Form-item> | |
| 14 | + <i-button type="primary" @click="handleSubmit('formCustom')">提交</i-button> | |
| 15 | + <i-button type="ghost" @click="handleReset('formCustom')" style="margin-left: 8px">重置</i-button> | |
| 16 | + </Form-item> | |
| 17 | + </i-form> | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 3 | 21 | <i-form v-ref:form :model="form" :rules="rules" :label-width="100" label-position="right"> |
| 4 | 22 | <form-item label="邮箱" prop="mail"> |
| 5 | 23 | <i-input :value.sync="form.mail" placeholder="请输入邮箱"> |
| ... | ... | @@ -190,6 +208,42 @@ |
| 190 | 208 | export default { |
| 191 | 209 | props: {}, |
| 192 | 210 | data () { |
| 211 | + const validatePass = (rule, value, callback) => { | |
| 212 | + if (value === '') { | |
| 213 | + callback(new Error('请输入密码')); | |
| 214 | + } else { | |
| 215 | + if (this.formCustom.passwdCheck !== '') { | |
| 216 | + this.$refs.formCustom.validateField('passwdCheck'); | |
| 217 | + } | |
| 218 | + callback(); | |
| 219 | + } | |
| 220 | + }; | |
| 221 | + const validatePassCheck = (rule, value, callback) => { | |
| 222 | + if (value === '') { | |
| 223 | + callback(new Error('请再次输入密码')); | |
| 224 | + } else if (value !== this.formCustom.passwd) { | |
| 225 | + callback(new Error('两次输入密码不一致!')); | |
| 226 | + } else { | |
| 227 | + callback(); | |
| 228 | + } | |
| 229 | + }; | |
| 230 | + const validateAge = (rule, value, callback) => { | |
| 231 | + if (!value) { | |
| 232 | + return callback(new Error('年龄不能为空')); | |
| 233 | + } | |
| 234 | + setTimeout(() => { | |
| 235 | + if (!Number.isInteger(value)) { | |
| 236 | + callback(new Error('请输入数字值')); | |
| 237 | + } else { | |
| 238 | + if (value < 18) { | |
| 239 | + callback(new Error('必须年满18岁')); | |
| 240 | + } else { | |
| 241 | + callback(); | |
| 242 | + } | |
| 243 | + } | |
| 244 | + }, 1000); | |
| 245 | + }; | |
| 246 | + | |
| 193 | 247 | return { |
| 194 | 248 | data: [{ |
| 195 | 249 | value: 'beijing', |
| ... | ... | @@ -373,6 +427,22 @@ |
| 373 | 427 | type: 'string', min: 10 |
| 374 | 428 | } |
| 375 | 429 | ] |
| 430 | + }, | |
| 431 | + formCustom: { | |
| 432 | + passwd: '', | |
| 433 | + passwdCheck: '', | |
| 434 | + age: '' | |
| 435 | + }, | |
| 436 | + ruleCustom: { | |
| 437 | + passwd: [ | |
| 438 | + { validator: validatePass, trigger: 'blur' } | |
| 439 | + ], | |
| 440 | + passwdCheck: [ | |
| 441 | + { validator: validatePassCheck, trigger: 'blur' } | |
| 442 | + ], | |
| 443 | + age: [ | |
| 444 | + { validator: validateAge, trigger: 'blur' } | |
| 445 | + ] | |
| 376 | 446 | } |
| 377 | 447 | } |
| 378 | 448 | }, |
| ... | ... | @@ -419,6 +489,18 @@ |
| 419 | 489 | console.log(direction); |
| 420 | 490 | console.log(moveKeys); |
| 421 | 491 | this.form.targetKeys1 = newTargetKeys; |
| 492 | + }, | |
| 493 | + handleSubmit (name) { | |
| 494 | + this.$refs[name].validate((valid) => { | |
| 495 | + if (valid) { | |
| 496 | + this.$Message.success('提交成功!'); | |
| 497 | + } else { | |
| 498 | + this.$Message.error('表单验证失败!'); | |
| 499 | + } | |
| 500 | + }) | |
| 501 | + }, | |
| 502 | + handleReset (name) { | |
| 503 | + this.$refs[name].resetFields(); | |
| 422 | 504 | } |
| 423 | 505 | } |
| 424 | 506 | }; | ... | ... |