diff --git a/examples/routers/form.vue b/examples/routers/form.vue index 6e09b88..d1c3589 100644 --- a/examples/routers/form.vue +++ b/examples/routers/form.vue @@ -1,21 +1,32 @@ <template> <div> <Form ref="formValidate" :model="formValidate" :rules="ruleValidate" :label-width="80"> - <Form-item prop="name"> + <Form-item label-for="autocomplete" prop="name"> <span slot="label"><Icon type="ionic"></Icon></span> - <AutoComplete v-model="formValidate.name" :data="['Li','Liang','Zhang']" placeholder="请输入姓名"></AutoComplete> + <AutoComplete element-id="autocomplete" v-model="formValidate.name" :data="['Li','Liang','Zhang']" placeholder="请输入姓名"></AutoComplete> </Form-item> <Form-item label="邮箱" prop="mail"> <!--<Input v-model="formValidate.mail" placeholder="请输入邮箱"></Input>--> <ColorPicker v-model="formValidate.mail"></ColorPicker> </Form-item> - <Form-item label="城市" prop="city"> - <Select v-model="formValidate.city" placeholder="请选择所在地"> + <Form-item label-for="select" label="城市" prop="city"> + <Select element-id="select" filterable v-model="formValidate.city" placeholder="请选择所在地"> <Option value="beijing">北京市</Option> <Option value="shanghai">上海市</Option> <Option value="shenzhen">深圳市</Option> </Select> </Form-item> + <Form-item label-for="date" label="选择日期" prop="date"> + <Date-picker element-id="date" type="date" placeholder="选择日期" v-model="formValidate.date"></Date-picker> + </Form-item> + <Form-item label-for="cascader" label="级联选择" prop="cascader"> + <Cascader elementId="cascader" :data="dataCascader" v-model="formValidate.cascader"></Cascader> + </Form-item> + + <Form-item label-for="inputnumber" label="数字框" prop="inputnumber"> + <InputNumber elementId="inputnumber" :max="10" :min="1" v-model="formValidate.inputnumber"></InputNumber> + </Form-item> + <Form-item label="选择日期"> <Row> <Col span="11"> @@ -45,8 +56,8 @@ <Checkbox label="看电影"></Checkbox> </Checkbox-group> </Form-item> - <Form-item label="介绍" prop="desc"> - <Input v-model="formValidate.desc" type="textarea" :autosize="{minRows: 2,maxRows: 5}" placeholder="请输入..."></Input> + <Form-item label-for="input" label="介绍" prop="desc"> + <Input element-id="input" v-model="formValidate.desc" type="text" :autosize="{minRows: 2,maxRows: 5}" placeholder="请输入..."></Input> </Form-item> <Form-item> <Button type="primary" @click="handleSubmit('formValidate')">提交</Button> @@ -83,6 +94,53 @@ export default { data () { return { + dataCascader: [{ + value: 'beijing', + label: '北京', + children: [ + { + value: 'gugong', + label: '故宫' + }, + { + value: 'tiantan', + label: '天坛' + }, + { + value: 'wangfujing', + label: '王府井' + } + ] + }, { + value: 'jiangsu', + label: '江苏', + children: [ + { + value: 'nanjing', + label: '南京', + children: [ + { + value: 'fuzimiao', + label: '夫子庙', + } + ] + }, + { + value: 'suzhou', + label: '苏州', + children: [ + { + value: 'zhuozhengyuan', + label: '拙政园', + }, + { + value: 'shizilin', + label: '狮子林', + } + ] + } + ], + }], color: '#19be6b', valuer: 3, valuec: [], @@ -172,7 +230,9 @@ interest: [], date: '', time: '', - desc: '' + desc: '', + cascader: [], + inputnumber: 1 }, ruleValidate: { name: [ diff --git a/src/components/auto-complete/auto-complete.vue b/src/components/auto-complete/auto-complete.vue index c514439..4989ccc 100644 --- a/src/components/auto-complete/auto-complete.vue +++ b/src/components/auto-complete/auto-complete.vue @@ -15,6 +15,7 @@ :transfer="transfer"> <slot name="input"> <i-input + :element-id="elementId" ref="input" slot="input" v-model="currentValue" @@ -85,6 +86,9 @@ }, name: { type: String + }, + elementId: { + type: String } }, data () { diff --git a/src/components/cascader/cascader.vue b/src/components/cascader/cascader.vue index ade65a1..16dfc70 100644 --- a/src/components/cascader/cascader.vue +++ b/src/components/cascader/cascader.vue @@ -4,6 +4,7 @@ <input type="hidden" :name="name" :value="currentValue"> <slot> <i-input + :element-id="elementId" ref="input" :readonly="!filterable" :disabled="disabled" @@ -131,6 +132,9 @@ }, name: { type: String + }, + elementId: { + type: String } }, data () { diff --git a/src/components/date-picker/picker.vue b/src/components/date-picker/picker.vue index dc1fc70..d54fa7d 100644 --- a/src/components/date-picker/picker.vue +++ b/src/components/date-picker/picker.vue @@ -3,6 +3,7 @@ <div ref="reference" :class="[prefixCls + '-rel']"> <slot> <i-input + :element-id="elementId" :class="[prefixCls + '-editor']" :readonly="!editable || readonly" :disabled="disabled" @@ -202,6 +203,9 @@ }, name: { type: String + }, + elementId: { + type: String } }, data () { diff --git a/src/components/form/form-item.vue b/src/components/form/form-item.vue index 574ac2f..01f6042 100644 --- a/src/components/form/form-item.vue +++ b/src/components/form/form-item.vue @@ -1,6 +1,6 @@ <template> <div :class="classes"> - <label :class="[prefixCls + '-label']" :style="labelStyles" v-if="label || $slots.label"><slot name="label">{{ label }}</slot></label> + <label :class="[prefixCls + '-label']" :for="labelFor" :style="labelStyles" v-if="label || $slots.label"><slot name="label">{{ label }}</slot></label> <div :class="[prefixCls + '-content']" :style="contentStyles"> <slot></slot> <transition name="fade"> @@ -10,8 +10,6 @@ </div> </template> <script> - // https://github.com/ElemeFE/element/blob/dev/packages/form/src/form-item.vue - import AsyncValidator from 'async-validator'; import Emitter from '../../mixins/emitter'; @@ -70,6 +68,9 @@ showMessage: { type: Boolean, default: true + }, + labelFor: { + type: String } }, data () { diff --git a/src/components/input-number/input-number.vue b/src/components/input-number/input-number.vue index 68d7905..0bc1321 100644 --- a/src/components/input-number/input-number.vue +++ b/src/components/input-number/input-number.vue @@ -16,6 +16,7 @@ </div> <div :class="inputWrapClasses"> <input + :id="elementId" :class="inputClasses" :disabled="disabled" autocomplete="off" @@ -101,6 +102,9 @@ }, precision: { type: Number + }, + elementId: { + type: String } }, data () { diff --git a/src/components/input/input.vue b/src/components/input/input.vue index 43d5ae3..32aba84 100644 --- a/src/components/input/input.vue +++ b/src/components/input/input.vue @@ -7,6 +7,7 @@ <i class="ivu-icon ivu-icon-load-c ivu-load-loop" :class="[prefixCls + '-icon', prefixCls + '-icon-validate']" v-if="!icon"></i> </transition> <input + :id="elementId" :autocomplete="autocomplete" ref="input" :type="type" @@ -30,8 +31,9 @@ <div :class="[prefixCls + '-group-append']" v-if="append" v-show="slotReady"><slot name="append"></slot></div> </template> <textarea - :autocomplete="autocomplete" v-else + :id="elementId" + :autocomplete="autocomplete" ref="textarea" :class="textareaClasses" :style="textareaStyles" @@ -119,6 +121,9 @@ return oneOf(value, ['on', 'off']); }, default: 'off' + }, + elementId: { + type: String } }, data () { diff --git a/src/components/select/select.vue b/src/components/select/select.vue index ae554a7..959f746 100644 --- a/src/components/select/select.vue +++ b/src/components/select/select.vue @@ -13,6 +13,7 @@ <span :class="[prefixCls + '-placeholder']" v-show="showPlaceholder && !filterable">{{ localePlaceholder }}</span> <span :class="[prefixCls + '-selected-value']" v-show="!showPlaceholder && !multiple && !filterable">{{ selectedSingle }}</span> <input + :id="elementId" type="text" v-if="filterable" v-model="query" @@ -135,6 +136,9 @@ }, name: { type: String + }, + elementId: { + type: String } }, data () { -- libgit2 0.21.4