Input
输入框。该组件是原生组件,使用时请注意相关限制
支持情况:

类型
ComponentType<InputProps>
示例代码
- React
- Vue
class App extends Component {
render () {
return (
<View className='example-body'>
<Text>可以自动聚焦的 input</Text>
<Input type='text' placeholder='将会获取焦点' focus/>
<Text>控制最大输入长度的 input</Text>
<Input type='text' placeholder='最大输入长度为 10' maxLength='10'/>
<Text>数字输入的 input</Text>
<Input type='number' placeholder='这是一个数字输入框'/>
<Text>密码输入的 input</Text>
<Input type='password' password placeholder='这是一个密码输入框'/>
<Text>带小数点的 input</Text>
<Input type='digit' placeholder='带小数点的数字键盘'/>
<Text>身份证输入的 input</Text>
<Input type='idcard' placeholder='身份证输入键盘'/>
<Text>控制占位符颜色的 input</Text>
<Input type='text' placeholder='占位符字体是红色的' placeholderStyle='color:red'/>
</View>
)
}
}
<template>
<view class="example-body">
<text>可以自动聚焦的 input</text>
<input type="text" placeholder="将会获取焦点" :focus="true" />
<text>控制最大输入长度的 input</text>
<input type="text" placeholder="最大输入长度为 10" maxLength="10"/>
<text>数字输入的 input</text>
<input type="number" placeholder="这是一个数字输入框"/>
<text>密码输入的 input</text>
<input type="password" :password="true" placeholder="这是一个密码输入框"/>
<text>带小数点的 input</text>
<input type="digit" placeholder="带小数点的数字键盘"/>
<text>身份证输入的 input</text>
<input type="idcard" placeholder="身份证输入键盘"/>
<text>控制占位符颜色的 input</text>
<input type="text" placeholder="占位符字体是红色的" placeholder-style="color:red;"/>
</view>
</template>
InputProps
| 参数 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| value | string | 否 | 输入框的初始内容 | |
| defaultValue | string | 否 | 设置 React 非受控输入框的初始内容 | |
| type | keyof Type | "text" | 否 | input 的类型 |
| password | boolean | false | 否 | 是否是密码类型 |
| placeholder | string | 否 | 输入框为空时占位符 | |
| placeholderStyle | string | 否 | 指定 placeholder 的样式 | |
| placeholderClass | string | "input-placeholder" | 否 | 指定 placeholder 的样式类 |
| placeholderTextColor | string | 否 | 指定 placeholder 的文本颜色 | |
| disabled | boolean | false | 否 | 是否禁用 |
| maxlength | number | 140 | 否 | 最大输入长度,设置为 -1 的时候不限制最大长度 |
| cursorSpacing | number | 0 | 否 | 指定光标与键盘的距离,单位 px 。取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离 |
| autoFocus | boolean | false | 否 | (即将废弃,请直接使用 focus )自动聚焦,拉起键盘 不推荐使用 |
| focus | boolean | false | 否 | 获取焦点 |
| confirmType | keyof ConfirmType | done | 否 | 设置键盘右下角按钮的文字,仅在type='text'时生效 |
| confirmHold | boolean | false | 否 | 点击键盘右下角按钮时是否保持键盘不收起 |
| cursor | number | 否 | 指定focus时的光标位置 | |
| cursorColor | string | 否 | 光标颜色。iOS 下的格式为十六进制颜色值 #000000,安卓下的只支持 default 和 green,Skyline 下无限制 | |
| selectionStart | number | -1 | 否 | 光标起始位置,自动聚集时有效,需与selection-end搭配使用 |
| selectionEnd | number | -1 | 否 | 光标结束位置,自动聚集时有效,需与selection-start搭配使用 |
| adjustPosition | boolean | true | 否 | 键盘弹起时,是否自动上推页面 |
| holdKeyboard | boolean | false | 否 | focus 时,点击页面的时候不收起键盘 |
| alwaysEmbed | boolean | false | 否 | 强制 input 处于同层状态,默认 focus 时 input 会切到非同层状态 (仅在 iOS 下生效) |
| safePasswordCertPath | string | 否 | 安全键盘加密公钥的路径,只支持包内路径 | |
| safePasswordLength | number | 否 | 安全键盘输入密码长度 | |
| safePasswordTimeStamp | number | 否 | 安全键盘加密时间戳 | |
| safePasswordNonce | string | 否 | 安全键盘加密盐值 | |
| safePasswordSalt | string | 否 | 安全键盘计算hash盐值,若指定custom-hash 则无效 | |
| safePasswordCustomHash | string | 否 | 安全键盘计算hash的算法表达式,如 md5(sha1('foo' + sha256(sm3(password + 'bar')))) | |
| randomNumber | boolean | false | 否 | 当 type 为 number, digit, idcard 数字键盘是否随机排列 |
| controlled | boolean | false | 否 | 是否为受控组件。为 true 时,value 内容会完全受 setData 控制。 建议当 type 值为 text 时不要将 controlled 设置为 true,详见 Bugs & Tips |
| nativeProps | Record<string, unknown> | 否 | 用于透传 WebComponents 上的属性到内部 H5 标签上 | |
| name | string | 否 | 组件名字,用于表单提交获取数据。 | |
| alwaysSystem | boolean | false | 否 | 是否强制使用系统键盘和 Web-view 创建的 input 元素。为 true 时,confirm-type、confirm-hold 可能失效。 |
| ariaLabel | string | 否 | 无障碍访问,(属性)元素的额外描述 | |
| clueType | number | 0 | 否 | 用于分发目的。取值:0 和 1,其中 0 表示默认,1 表示手机号,需要和留资分发配置一起使用,详情见留资分发配置。 |
| onInput | CommonEventFunction<inputEventDetail> | 否 | 当键盘输入时,触发input事件,event.detail = {value, cursor, keyCode},处理函数可以直接 return 一个字符串,将替换输入框的内容。 | |
| onFocus | CommonEventFunction<inputForceEventDetail> | 否 | 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度 | |
| onBlur | CommonEventFunction<inputValueEventDetail> | 否 | 输入框失去焦点时触发 | |
| onConfirm | CommonEventFunction<inputValueEventDetail> | 否 | 点击完成按钮时触发 | |
| onKeyboardHeightChange | CommonEventFunction<onKeyboardHeightChangeEventDetail> | 否 | 键盘高度发生变化的时候触发此事件 | |
| onNickNameReview | CommonEventFunction | 否 | 用户昵称审核完毕后触发,仅在 type 为 "nickname" 时有效,event.detail = { pass, timeout } | |
| onSelectionChange | CommonEventFunction | 否 | 选区改变事件, {selectionStart, selectionEnd} | |
| onKeyboardCompositionStart | CommonEventFunction | 否 | 输入法开始新的输入时触发 (仅当输入法支持时触发) | |
| onKeyboardCompositionUpdate | CommonEventFunction | 否 | 输入法输入字符时触发(仅当输入法支持时触发) | |
| onKeyboardCompositionEnd | CommonEventFunction | 否 | 输入法输入结束时触发(仅当输入法支持时触发) | |
| onKeyoardHeightChangeWorklet | string | 否 | 键盘高度变化时触发。event.detail = {height: height, pageBottomPadding: pageBottomPadding}; height: 键盘高度,pageBottomPadding: 页面上推高度 |
API 支持度
| API | 微信小程序 | 百度小程序 | 支付宝小程序 | 抖音小程序 | QQ 小程序 | 京东小程序 | H5 | React Native | Harmony | Harmony hybrid |
|---|---|---|---|---|---|---|---|---|---|---|
| InputProps.value | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| InputProps.defaultValue | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| InputProps.type | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| InputProps.password | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| InputProps.placeholder | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| InputProps.placeholderStyle | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||
| InputProps.placeholderClass | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||||
| InputProps.placeholderTextColor | ✔️ | ✔️ | ||||||||
| InputProps.disabled | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| InputProps.maxlength | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| InputProps.cursorSpacing | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |||||
| InputProps.autoFocus | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |||||
| InputProps.focus | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| InputProps.confirmType | ✔️ | ✔️ | ✔️(confirm-type 与 enableNative 属性冲突,若希望 confirm-type 生效,enableNative 不能设定为 false,而且不能设定 always-system) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||
| InputProps.confirmHold | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||||
| InputProps.cursor | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||
| InputProps.cursorColor | ✔️ | |||||||||
| InputProps.selectionStart | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |||
| InputProps.selectionEnd | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |||
| InputProps.adjustPosition | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||||
| InputProps.holdKeyboard | ✔️ | ✔️ | ||||||||
| InputProps.alwaysEmbed | ✔️ | |||||||||
| InputProps.safePasswordCertPath | ✔️ | |||||||||
| InputProps.safePasswordLength | ✔️ | |||||||||
| InputProps.safePasswordTimeStamp | ✔️ | |||||||||
| InputProps.safePasswordNonce | ✔️ | |||||||||
| InputProps.safePasswordSalt | ✔️ | |||||||||
| InputProps.safePasswordCustomHash | ✔️ | |||||||||
| InputProps.randomNumber | ✔️ | |||||||||
| InputProps.controlled | ✔️ | |||||||||
| InputProps.nativeProps | ✔️ | ✔️ | ||||||||
| InputProps.name | ✔️ | |||||||||
| InputProps.alwaysSystem | ✔️ | |||||||||
| InputProps.ariaLabel | ✔️ | |||||||||
| InputProps.clueType | ✔️ | |||||||||
| InputProps.onInput | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| InputProps.onFocus | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| InputProps.onBlur | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| InputProps.onConfirm | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| InputProps.onKeyboardHeightChange | ✔️ | ✔️ | ✔️ | ✔️ | ||||||
| InputProps.onNickNameReview | ✔️ | |||||||||
| InputProps.onSelectionChange | ✔️ | |||||||||
| InputProps.onKeyboardCompositionStart | ✔️ | |||||||||
| InputProps.onKeyboardCompositionUpdate | ✔️ | |||||||||
| InputProps.onKeyboardCompositionEnd | ✔️ | |||||||||
| InputProps.onKeyoardHeightChangeWorklet | ✔️ |
Type
Input 类型
| 参数 | 说明 |
|---|---|
| text | 文本输入键盘 |
| number | 数字输入键盘 |
| idcard | 身份证输入键盘 |
| digit | 带小数点的数字键盘 |
| safe-password | 密码安全输入键盘指引 |
| nickname | 昵称输入键盘 |
| numberpad | 数字输入键盘 |
| digitpad | 带小数点的数字键盘 |
| idcardpad | 身份证输入键盘 |
API 支持度
| API | 微信小程序 | 支付宝小程序 | H5 | React Native | Harmony | Harmony hybrid |
|---|---|---|---|---|---|---|
| Type.text | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| Type.number | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| Type.idcard | ✔️ | ✔️ | ✔️ | |||
| Type.digit | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| Type.safe-password | ✔️ | ✔️ | ||||
| Type.nickname | ✔️ | ✔️ | ||||
| Type.numberpad | ✔️ | |||||
| Type.digitpad | ✔️ | |||||
| Type.idcardpad | ✔️ |
ConfirmType
Confirm 类型
| 参数 | 说明 |
|---|---|
| send | 右下角按钮为“发送” |
| search | 右下角按钮为“搜索” |
| next | 右下角按钮为“下一个” |
| go | 右下角按钮为“前往” |
| done | 右下角按钮为“完成” |
inputEventDetail
注意:React-Native 端
inputEventDetail仅实现参数value,若需实时获取光标位置则可通过onSelectionChange实现。
| 参数 | 类型 | 说明 |
|---|---|---|
| value | string | 输入值 |
| cursor | number | 光标位置 |
| keyCode | number | 键值 |
inputForceEventDetail
| 参数 | 类型 | 说明 |
|---|---|---|
| value | string | 输入值 |
| height | number | 键盘高度 |
inputValueEventDetail
| 参数 | 类型 | 说明 |
|---|---|---|
| value | string | 输入值 |
onKeyboardHeightChangeEventDetail
| 参数 | 类型 | 说明 |
|---|---|---|
| height | number | 键盘高度 |
| duration | number | 持续时间 |