感谢您的反馈!
表单布局、校验、数据提交操作时用到。
nodeName 作为 name、idsize=medium, 并且会控制 FormItem 内所有组件的size。 如果想修改组件的size <form-item size="small" >class="next-form-text-align" 辅助调整<form-item />直接包裹的组件才能展示校验错误提示。如果界面不展示错误信息,请检查是否有多个层级。
| 参数 | 说明 | 类型 | 默认值 |
| inline | 是否要开启内联模式 | Boolean | false |
| size | 单个 Item 的 size 自定义,优先级高于 Form 的 size, 并且当组件与 Item 一起使用时,组件自身设置 size 属性无效。 可选值: 'large'(大) 'medium'(中) 'small'(小) |
Enum | 'medium' |
| labelAlign | 标签的位置 如不生效,请参考"注意事项" |
Enum | 'left' |
| labelTextAlign | 标签的左右对齐方式 可选值: 'left'(左) 'right'(右) |
Enum | - |
| children | 子元素 | any | - |
| value | 表单数值 | Object | - |
| onChange | 表单变化回调 | Function | func.noop |
| labelCol | 控制第一级 Item 的 labelCol | Object | - |
| wrapperCol | 控制第一级 Item 的 wrapperCol | Object | - |
<view class="com-wrap">
<view class="com-title">基本</view>
<form style="width: 60%" data-name="form" onChange="onChange" labelCol="{{labelCol}}" wrapperCol="{{wrapperCol}}">
<form-item label="username:" required>
<input onChange="onChange" data-name="username" defaultValue="{{username}}" name="username" placeholder="Please Enter username"/>
</form-item>
<form-item label="password:">
<input onChange="onChange" data-name="password" defaultValue="{{password}}" htmlType="password" name="pass" placeholder="Please Enter Password"/>
</form-item>
<form-item label="Note:" help="something">
<textarea onChange="onChange" data-name="note" defaultValue="{{note}}" placeholder="something" name="remark" />
</form-item>
<form-item label="Select" >
<select onChange="onChange" data-name="select" defaultValue="{{select}}" style="width: 200px" name="select">
<option value="jack">jack</option>
<option value="lucy">lucy</option>
<option value="disabled" disabled>disabled</option>
<option value="hugohua">hugohua</option>
</select>
</form-item>
<form-item label="Switch:">
<switch onChange="onChange" data-name="switch" name="switch" defaultChecked="{{switch}}" />
</form-item>
<form-item label="Radio:">
<!-- <radio-group name="radio">
<radio value="apple">apple</radio>
<radio value="banana">banana</radio>
<radio disabled value="cherry">cherry(disabled)</radio>
</radio-group> -->
<radio-group dataSource="{{list}}" onChange="onChangeHeihei" />
</form-item>
<form-item label="Checkbox-group:">
<checkbox-group name="checkbox" data-name="checkbox-group" defaultValue="b" onChange="onChange">
<checkbox onChange="onChange" data-name="option1" name="option1" value="a">option 1 </checkbox>
<checkbox onChange="onChange" data-name="option2" name="option2" style="margin-left:8px" value="b">option 2 </checkbox>
<checkbox onChange="onChange" data-name="option3" name="option3" style="margin-left:8px" disabled value="c">option 3(disabled)</checkbox>
</checkbox-group>
</form-item>
<form-item label="Agreement:">
<checkbox onChange="onChange" data-name="agreement" name="agreement" name="agreement" defaultChecked="{{agreement}}">Agree</checkbox>
</form-item>
<form-item label=" ">
<button onTap="handleSubmit">Confirm</button>
<!--<button style="margin-left:8px" onTap={this.reset}>reset</button>-->
</form-item>
</form>
</view>
Component({
mixins: [],
data: {
username: 'test',
password: '',
select: 'jack',
switch: true,
option1: false,
option2: false,
option3: false,
agreement: false,
radioValue: '',
list: [
{
value: 'appale',
label: 'Appale',
disabled: false
},
{
value: 'pear',
label: 'Pear'
},
{
value: 'orange',
label: 'Orange',
disabled: true
}
],
labelCol: { fixedSpan: 4 },
wrapperCol: { span: 20 },
},
props: {},
didMount() {},
didUpdate() {},
didUnmount() {},
methods: {
onChange(e) {
let {
detail: { value },
currentTarget: { dataset }
} = e;
let { name } = dataset;
console.log(name + ' onChange:', value);
this.setData({ [name]: value });
},
onChangeHeihei(e) {
let {
detail: { value }
// currentTarget: { dataset }
} = e;
// let { value } = dataset;
// console.log('name:', name);
// console.log('value:', value);
// debugger;
this.setData({ radioValue: value });
},
handleSubmit() {
console.log('[form submit]:', this.data);
my.showToast({ content: JSON.stringify(this.data) });
}
}
});