InputItem 文本输入
用于接受单行文本。规则
支持通过键盘或者剪切板输入文本。
通过光标可以在水平方向进行移动。
对特定格式的文本进行处理,eg:隐藏密码。
代码演示
输入框 (rc-form 文档)
支持银行卡(type="bankCard"), 手机号码(type="phone"), 密码(type="password"),数字(type="number") 四种类型的格式. (rc-form 文档)
import { List, InputItem } from 'antd-mobile';
import { createForm } from 'rc-form';
let BasicInputExample = React.createClass({
onClick() {
console.log(this.props.form.getFieldsValue());
},
render() {
const { getFieldProps } = this.props.form;
return (<div>
<List
title="基本"
>
<List.Body>
<InputItem
placeholder="设置defaultValue,不设置value"
clear
maxLength={10}
defaultValue=""
onBlur={(value) => { console.log('onBlur'); console.log(value); }}
onFocus={(value) => { console.log('onFocus'); console.log(value); }}
onChange={(value) => { console.log('onChange'); console.log(value); }}
>非受控</InputItem>
<InputItem
{...getFieldProps('input1', {
initialValue: '',
})}
placeholder="设置value,不设置defaultValue"
clear
maxLength={10}
onBlur={(value) => { console.log('onBlur'); console.log(value); }}
onFocus={(value) => { console.log('onFocus'); console.log(value); }}
>受控</InputItem>
<InputItem
value="editable={false}"
editable={false}
>不可编辑</InputItem>
<InputItem
value="disabled={true}"
disabled
>禁用状态</InputItem>
<InputItem
{...getFieldProps('input2', {
initialValue: '标签可以是node',
})}
placeholder="标签可以是node"
>
<div style={{ backgroundImage: 'url(https://os.alipayobjects.com/rmsportal/zumwvwrngNMGSWe.png)', backgroundSize: 'cover', height: '0.44rem', width: '0.44rem' }} />
</InputItem>
<InputItem
{...getFieldProps('input3', {
initialValue: '',
})}
clear
placeholder="无标签"
/>
<InputItem
{...getFieldProps('input4', {
initialValue: '',
})}
clear
placeholder="extra"
extra="元"
>带注释</InputItem>
<InputItem
{...getFieldProps('input5', {
initialValue: '',
})}
placeholder="注释可以是node"
clear
extra={<img src="https://os.alipayobjects.com/rmsportal/mOoPurdIfmcuqtr.png" />}
>带注释</InputItem>
<InputItem
{...getFieldProps('input6', {
initialValue: '输入框',
})}
clear
placeholder="clear"
>清除功能</InputItem>
<InputItem
{...getFieldProps('input7', {
initialValue: '校验出错',
})}
error
onErrorClick={() => { alert('点击报错'); }}
errorMsg="校验出错"
clear
placeholder="内容"
>报错样式</InputItem>
</List.Body>
</List>
<List
title="固定标签字数"
>
<List.Body>
<InputItem
{...getFieldProps('label2', {
initialValue: '',
})}
placeholder="内容"
clear
maxLength={10}
labelNumber={2}
onBlur={(value) => { console.log('onBlur'); console.log(value); }}
onFocus={(value) => { console.log('onFocus'); console.log(value); }}
>姓名</InputItem>
<InputItem
{...getFieldProps('label3', {
initialValue: '',
})}
placeholder="内容"
clear
maxLength={10}
labelNumber={3}
onBlur={(value) => { console.log('onBlur'); console.log(value); }}
onFocus={(value) => { console.log('onFocus'); console.log(value); }}
>校验码</InputItem>
<InputItem
{...getFieldProps('label4', {
initialValue: '',
})}
placeholder="默认"
clear
maxLength={10}
onBlur={(value) => { console.log('onBlur'); console.log(value); }}
onFocus={(value) => { console.log('onFocus'); console.log(value); }}
>四字标签</InputItem>
<InputItem
{...getFieldProps('label5', {
initialValue: '',
})}
placeholder="内容"
clear
maxLength={10}
labelNumber={5}
onBlur={(value) => { console.log('onBlur'); console.log(value); }}
onFocus={(value) => { console.log('onFocus'); console.log(value); }}
>五个字标签</InputItem>
<InputItem
{...getFieldProps('label6', {
initialValue: '',
})}
placeholder="内容"
clear
maxLength={10}
labelNumber={6}
onBlur={(value) => { console.log('onBlur'); console.log(value); }}
onFocus={(value) => { console.log('onFocus'); console.log(value); }}
>六个字标签六</InputItem>
<InputItem
{...getFieldProps('label7', {
initialValue: '',
})}
placeholder="内容"
clear
maxLength={10}
labelNumber={7}
onBlur={(value) => { console.log('onBlur'); console.log(value); }}
onFocus={(value) => { console.log('onFocus'); console.log(value); }}
>七个字标签七个</InputItem>
</List.Body>
</List>
</div>);
},
});
BasicInputExample = createForm()(BasicInputExample);
ReactDOM.render(<BasicInputExample />, mountNode);
import { List, InputItem } from 'antd-mobile';
import { createForm } from 'rc-form';
let FormatExample = React.createClass({
render() {
const { getFieldProps } = this.props.form;
return (<List>
<List.Header>格式</List.Header>
<List.Body>
<InputItem
{...getFieldProps('bankCard', {
initialValue: '8888 8888 8888 8888',
})}
type="bankCard"
placeholder="8888 8888 8888 8888"
clear
onBlur={function (e) { console.log('onBlur'); console.log(e); }}
onFocus={function (e) { console.log('onFocus'); console.log(e); }}
>银行卡</InputItem>
<InputItem
{...getFieldProps('phone', {
initialValue: '186 1234 1234',
})}
type="phone"
placeholder="186 1234 1234"
clear
onBlur={function (e) { console.log('onBlur'); console.log(e); }}
onFocus={function (e) { console.log('onFocus'); console.log(e); }}
>手机号码</InputItem>
<InputItem
{...getFieldProps('password', {
initialValue: '123131',
})}
type="password"
placeholder="****"
clear
onBlur={function (e) { console.log('onBlur'); console.log(e); }}
onFocus={function (e) { console.log('onFocus'); console.log(e); }}
>密码</InputItem>
<InputItem
{...getFieldProps('number', {
initialValue: '123131',
})}
type="number"
placeholder="123131"
clear
onBlur={function (e) { console.log('onBlur'); console.log(e); }}
onFocus={function (e) { console.log('onFocus'); console.log(e); }}
>数字键盘</InputItem>
</List.Body>
</List>);
},
});
FormatExample = createForm()(FormatExample);
ReactDOM.render(<FormatExample />, mountNode);
API
成员 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
prefixListCls | String | am-list | ||
type | 格式 | String | 银行卡输入bankCard ,手机号输入phone (此时最大长度固定为11,maxLength 设置无效),密码输入password ,文本输入text , 数字输入number (尽量唤起数字键盘) | text |
name | input的name | String | 无 | |
value | value值 | String | 是否设置value,决定了该InputItem是否是受控组件,详情请参考https://facebook.github.io/react/docs/forms.html | 无 |
defaultValue | 设置初始默认值 | String | '' | |
editable | 是否可编辑 | bool | true | |
disabled | 是否禁用 | bool | false | |
placeholder | placeholder | String | 无 | |
clear | 是否带清除功能 | bool | 仅editable 为true ,disabled 为false ,value 设置才生效 | false |
maxLength | 最大长度 | number | 无 | |
onChange | input change事件触发的回调函数,参数是value | Function | 当组件是受控组件时生效 | 无 |
onBlur | input blur事件触发的回调函数,参数是value | Function | 无 | |
onFocus | input focus事件触发的回调函数,参数是value | Function | 无 | |
extra | 右边注释 | string or node | '' | |
onExtraClick | extra点击事件触发的回调函数,参数是event对象 | Function | 无 | |
error | 报错样式 | bool | false | |
onErrorClick | 点击报错icon触发的回调, | Function | 无 | |
labelNumber | 标签字数(一个表单页面中,通常有多个InputItem,需要统一标签字数以便统一宽度,保持页面整洁、美观) | number | 2 , 3 , 4 , 5 , 6 , 7 | 4 |
size(本期不实现) | 尺寸 | string | large ,small | large |
labelPosition(本期不实现) | 标题方向 | string | left ,top | left |
textAlign(本期不实现) | 文本对齐 | string | left ,center | left |