Commit c3a9f3895b0df00111b5233489c54bca08ec8640

Authored by 梁灏
1 parent 8a83e7c4

update Input

update Input
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
... ... @@ -38,6 +38,12 @@
38 38 line-height: 32px;
39 39 font-size: @font-size-small;
40 40 }
  41 + & & {
  42 + margin-bottom: 0;
  43 + }
  44 + & & &-content {
  45 + margin-left: 0!important;
  46 + }
41 47  
42 48 &-error-tip{
43 49 position: absolute;
... ...
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 };
... ...