--- title: 表单 date: 2023-05-28 16:17:38 permalink: /pages/component/form article: false --- ## input输入框 1. `form` 表单最外层是用 `form` 标签包裹 2. 每一个子元素添加类名 `cu-form-group`,行内可以自定义,`input` 标签就是输入框 3. `title` 类名用于设置每行的文字说明,如果想统一宽度,像示例一样,需要自定义宽度 4. **行内没有 `input` 标签的话,`title` 后面的元素定位在行内右侧,有 `input` 标签的话,标签后的元素也是在行内右侧** ```html
``` ## picker选择器 1. 对于表单中从底部谈起的选择器,写法与上述简单的input相同,而选择器picker的使用,建议查看官方代码 2. 后期会封装一个组件给大家用(暂无) ```html return { index: -1, picker: ['喵喵喵', '汪汪汪', '哼唧哼唧'], multiArray: [ ['无脊柱动物', '脊柱动物'], ['扁性动物', '线形动物', '环节动物', '软体动物', '节肢动物'], ['猪肉绦虫', '吸血虫'] ], objectMultiArray: [ [{ id: 0, name: '无脊柱动物' }, { id: 1, name: '脊柱动物' } ], [{ id: 0, name: '扁性动物' }, { id: 1, name: '线形动物' }, { id: 2, name: '环节动物' }, { id: 3, name: '软体动物' }, { id: 3, name: '节肢动物' } ], [{ id: 0, name: '猪肉绦虫' }, { id: 1, name: '吸血虫' } ] ], multiIndex: [0, 0, 0], time: '12:01', date: '2018-12-25', region: ['广东省', '广州市', '海珠区'], }; PickerChange(e) { this.index = e.detail.value }, MultiChange(e) { this.multiIndex = e.detail.value }, MultiColumnChange(e) { let data = { multiArray: this.multiArray, multiIndex: this.multiIndex }; data.multiIndex[e.detail.column] = e.detail.value; switch (e.detail.column) { case 0: switch (data.multiIndex[0]) { case 0: data.multiArray[1] = ['扁性动物', '线形动物', '环节动物', '软体动物', '节肢动物']; data.multiArray[2] = ['猪肉绦虫', '吸血虫']; break; case 1: data.multiArray[1] = ['鱼', '两栖动物', '爬行动物']; data.multiArray[2] = ['鲫鱼', '带鱼']; break; } data.multiIndex[1] = 0; data.multiIndex[2] = 0; break; case 1: switch (data.multiIndex[0]) { case 0: switch (data.multiIndex[1]) { case 0: data.multiArray[2] = ['猪肉绦虫', '吸血虫']; break; case 1: data.multiArray[2] = ['蛔虫']; break; case 2: data.multiArray[2] = ['蚂蚁', '蚂蟥']; break; case 3: data.multiArray[2] = ['河蚌', '蜗牛', '蛞蝓']; break; case 4: data.multiArray[2] = ['昆虫', '甲壳动物', '蛛形动物', '多足动物']; break; } break; case 1: switch (data.multiIndex[1]) { case 0: data.multiArray[2] = ['鲫鱼', '带鱼']; break; case 1: data.multiArray[2] = ['青蛙', '娃娃鱼']; break; case 2: data.multiArray[2] = ['蜥蜴', '龟', '壁虎']; break; } break; } data.multiIndex[2] = 0; break; } this.multiArray = data.multiArray; this.multiIndex = data.multiIndex; }, TimeChange(e) { this.time = e.detail.value }, DateChange(e) { this.date = e.detail.value }, RegionChange(e) { this.region = e.detail.value }, ``` ## switch开关 1. 对于开关的样式,参考 `switch` 官方文档 2. 在微信小程序上,switch的color属性不生效,想要更改开关颜色,可以用颜色类名,直接写颜色就可以 ```html return { switchA: false, switchB: true, switchC: false, switchD: false, }; SwitchA(e) { this.switchA = e.detail.value }, SwitchB(e) { this.switchB = e.detail.value }, SwitchC(e) { this.switchC = e.detail.value }, SwitchD(e) { this.switchD = e.detail.value }, ``` ## radio单选框 1. 主要还是 `radio` 官方文档为主 2. 更改颜色同上,使用提供的颜色类名即可 3. 其默认样式是圆形全色中间有个√,可以通过类名radio更改形状为镂空中间一个点 ```html return { radio: 'A', }; RadioChange(e) { this.radio = e.detail.value }, ``` ## checkbox复选框 1. 官方示例 2. 更改颜色同上,使用提供的颜色类名即可 3. 其默认样式是方形,可以通过类名 `round` 更改形状为圆形 ```html return { checkbox: [{ value: 'A', checked: true }, { value: 'B', checked: true }, { value: 'C', checked: false }], }; CheckboxChange(e) { var items = this.checkbox, values = e.detail.value; for (var i = 0, lenI = items.length; i < lenI; ++i) { items[i].checked = false; for (var j = 0, lenJ = values.length; j < lenJ; ++j) { if (items[i].value == values[j]) { items[i].checked = true; break } } } }, ``` ## 图片上传 1. 官方示例 2. `uniapp` [图片相关操作的API](https://uniapp.dcloud.net.cn/api/media/image.html#) ```vue ``` ## 头像 这个样式可以用于用户修改个人资料中,修改头像 ```html ``` ## 多行文本 ```html return{ modalName: null, } textareaAInput(e) { this.textareaAValue = e.detail.value }, textareaBInput(e) { this.textareaBValue = e.detail.value } ```