InputItem 文本输入

用于接受单行文本。

规则

  • 支持通过键盘或者剪切板输入文本。

  • 通过光标可以在水平方向进行移动。

  • 对特定格式的文本进行处理,eg:隐藏密码。

代码演示

基本

输入框 (rc-form 文档)

  1. import { List, InputItem } from 'antd-mobile';
  2. import { createForm } from 'rc-form';
  3. let BasicInputExample = React.createClass({
  4. onClick() {
  5. console.log(this.props.form.getFieldsValue());
  6. },
  7. render() {
  8. const { getFieldProps } = this.props.form;
  9. return (<div>
  10. <List
  11. title="基本"
  12. >
  13. <List.Body>
  14. <InputItem
  15. placeholder="设置defaultValue,不设置value"
  16. clear
  17. maxLength={10}
  18. defaultValue=""
  19. onBlur={(value) => { console.log('onBlur'); console.log(value); }}
  20. onFocus={(value) => { console.log('onFocus'); console.log(value); }}
  21. onChange={(value) => { console.log('onChange'); console.log(value); }}
  22. >非受控</InputItem>
  23. <InputItem
  24. {...getFieldProps('input1', {
  25. initialValue: '',
  26. })}
  27. placeholder="设置value,不设置defaultValue"
  28. clear
  29. maxLength={10}
  30. onBlur={(value) => { console.log('onBlur'); console.log(value); }}
  31. onFocus={(value) => { console.log('onFocus'); console.log(value); }}
  32. >受控</InputItem>
  33. <InputItem
  34. value="editable={false}"
  35. editable={false}
  36. >不可编辑</InputItem>
  37. <InputItem
  38. value="disabled={true}"
  39. disabled
  40. >禁用状态</InputItem>
  41. <InputItem
  42. {...getFieldProps('input2', {
  43. initialValue: '标签可以是node',
  44. })}
  45. placeholder="标签可以是node"
  46. >
  47. <div style={{ backgroundImage: 'url(https://os.alipayobjects.com/rmsportal/zumwvwrngNMGSWe.png)', backgroundSize: 'cover', height: '0.44rem', width: '0.44rem' }} />
  48. </InputItem>
  49. <InputItem
  50. {...getFieldProps('input3', {
  51. initialValue: '',
  52. })}
  53. clear
  54. placeholder="无标签"
  55. />
  56. <InputItem
  57. {...getFieldProps('input4', {
  58. initialValue: '',
  59. })}
  60. clear
  61. placeholder="extra"
  62. extra="元"
  63. >带注释</InputItem>
  64. <InputItem
  65. {...getFieldProps('input5', {
  66. initialValue: '',
  67. })}
  68. placeholder="注释可以是node"
  69. clear
  70. extra={<img src="https://os.alipayobjects.com/rmsportal/mOoPurdIfmcuqtr.png" />}
  71. >带注释</InputItem>
  72. <InputItem
  73. {...getFieldProps('input6', {
  74. initialValue: '输入框',
  75. })}
  76. clear
  77. placeholder="clear"
  78. >清除功能</InputItem>
  79. <InputItem
  80. {...getFieldProps('input7', {
  81. initialValue: '校验出错',
  82. })}
  83. error
  84. onErrorClick={() => { alert('点击报错'); }}
  85. errorMsg="校验出错"
  86. clear
  87. placeholder="内容"
  88. >报错样式</InputItem>
  89. </List.Body>
  90. </List>
  91. <List
  92. title="固定标签字数"
  93. >
  94. <List.Body>
  95. <InputItem
  96. {...getFieldProps('label2', {
  97. initialValue: '',
  98. })}
  99. placeholder="内容"
  100. clear
  101. maxLength={10}
  102. labelNumber={2}
  103. onBlur={(value) => { console.log('onBlur'); console.log(value); }}
  104. onFocus={(value) => { console.log('onFocus'); console.log(value); }}
  105. >姓名</InputItem>
  106. <InputItem
  107. {...getFieldProps('label3', {
  108. initialValue: '',
  109. })}
  110. placeholder="内容"
  111. clear
  112. maxLength={10}
  113. labelNumber={3}
  114. onBlur={(value) => { console.log('onBlur'); console.log(value); }}
  115. onFocus={(value) => { console.log('onFocus'); console.log(value); }}
  116. >校验码</InputItem>
  117. <InputItem
  118. {...getFieldProps('label4', {
  119. initialValue: '',
  120. })}
  121. placeholder="默认"
  122. clear
  123. maxLength={10}
  124. onBlur={(value) => { console.log('onBlur'); console.log(value); }}
  125. onFocus={(value) => { console.log('onFocus'); console.log(value); }}
  126. >四字标签</InputItem>
  127. <InputItem
  128. {...getFieldProps('label5', {
  129. initialValue: '',
  130. })}
  131. placeholder="内容"
  132. clear
  133. maxLength={10}
  134. labelNumber={5}
  135. onBlur={(value) => { console.log('onBlur'); console.log(value); }}
  136. onFocus={(value) => { console.log('onFocus'); console.log(value); }}
  137. >五个字标签</InputItem>
  138. <InputItem
  139. {...getFieldProps('label6', {
  140. initialValue: '',
  141. })}
  142. placeholder="内容"
  143. clear
  144. maxLength={10}
  145. labelNumber={6}
  146. onBlur={(value) => { console.log('onBlur'); console.log(value); }}
  147. onFocus={(value) => { console.log('onFocus'); console.log(value); }}
  148. >六个字标签六</InputItem>
  149. <InputItem
  150. {...getFieldProps('label7', {
  151. initialValue: '',
  152. })}
  153. placeholder="内容"
  154. clear
  155. maxLength={10}
  156. labelNumber={7}
  157. onBlur={(value) => { console.log('onBlur'); console.log(value); }}
  158. onFocus={(value) => { console.log('onFocus'); console.log(value); }}
  159. >七个字标签七个</InputItem>
  160. </List.Body>
  161. </List>
  162. </div>);
  163. },
  164. });
  165. BasicInputExample = createForm()(BasicInputExample);
  166. ReactDOM.render(<BasicInputExample />, mountNode);

格式

支持银行卡(type="bankCard"), 手机号码(type="phone"), 密码(type="password"),数字(type="number") 四种类型的格式. (rc-form 文档)

  1. import { List, InputItem } from 'antd-mobile';
  2. import { createForm } from 'rc-form';
  3. let FormatExample = React.createClass({
  4. render() {
  5. const { getFieldProps } = this.props.form;
  6. return (<List>
  7. <List.Header>格式</List.Header>
  8. <List.Body>
  9. <InputItem
  10. {...getFieldProps('bankCard', {
  11. initialValue: '8888 8888 8888 8888',
  12. })}
  13. type="bankCard"
  14. placeholder="8888 8888 8888 8888"
  15. clear
  16. onBlur={function (e) { console.log('onBlur'); console.log(e); }}
  17. onFocus={function (e) { console.log('onFocus'); console.log(e); }}
  18. >银行卡</InputItem>
  19. <InputItem
  20. {...getFieldProps('phone', {
  21. initialValue: '186 1234 1234',
  22. })}
  23. type="phone"
  24. placeholder="186 1234 1234"
  25. clear
  26. onBlur={function (e) { console.log('onBlur'); console.log(e); }}
  27. onFocus={function (e) { console.log('onFocus'); console.log(e); }}
  28. >手机号码</InputItem>
  29. <InputItem
  30. {...getFieldProps('password', {
  31. initialValue: '123131',
  32. })}
  33. type="password"
  34. placeholder="****"
  35. clear
  36. onBlur={function (e) { console.log('onBlur'); console.log(e); }}
  37. onFocus={function (e) { console.log('onFocus'); console.log(e); }}
  38. >密码</InputItem>
  39. <InputItem
  40. {...getFieldProps('number', {
  41. initialValue: '123131',
  42. })}
  43. type="number"
  44. placeholder="123131"
  45. clear
  46. onBlur={function (e) { console.log('onBlur'); console.log(e); }}
  47. onFocus={function (e) { console.log('onFocus'); console.log(e); }}
  48. >数字键盘</InputItem>
  49. </List.Body>
  50. </List>);
  51. },
  52. });
  53. FormatExample = createForm()(FormatExample);
  54. ReactDOM.render(<FormatExample />, mountNode);

InputItem文本输入 - 图1

API

成员说明类型可选值默认值
prefixListClsStringam-list
type格式String银行卡输入bankCard,手机号输入phone(此时最大长度固定为11,maxLength设置无效),密码输入password,文本输入text, 数字输入number(尽量唤起数字键盘)text
nameinput的nameString
valuevalue值String是否设置value,决定了该InputItem是否是受控组件,详情请参考https://facebook.github.io/react/docs/forms.html
defaultValue设置初始默认值String''
editable是否可编辑booltrue
disabled是否禁用boolfalse
placeholderplaceholderString
clear是否带清除功能booleditabletrue,disabledfalse,value设置才生效false
maxLength最大长度number
onChangeinput change事件触发的回调函数,参数是valueFunction当组件是受控组件时生效
onBlurinput blur事件触发的回调函数,参数是valueFunction
onFocusinput focus事件触发的回调函数,参数是valueFunction
extra右边注释string or node''
onExtraClickextra点击事件触发的回调函数,参数是event对象Function
error报错样式boolfalse
onErrorClick点击报错icon触发的回调,Function
labelNumber标签字数(一个表单页面中,通常有多个InputItem,需要统一标签字数以便统一宽度,保持页面整洁、美观)number2, 3, 4, 5, 6, 74
size(本期不实现)尺寸stringlarge,smalllarge
labelPosition(本期不实现)标题方向stringleft,topleft
textAlign(本期不实现)文本对齐stringleft,centerleft