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 | }; | ... | ... |