通过键盘输入内容,是最基础的表单域包装,一般用在表单页进行信息的收集,提供文本框、选择框两种类型。
当 Input 作为表单组件,配合 Form/FormItem 组件使用时,需要设置 mode 的值为 form。
属性
属性 | 类型 | 必填 | 默认值 | 说明 |
label | string | slot | 否 | - | 标签文案 |
controlled | boolean | 否 | false | 是否受控模式 |
type | 'text' | 'number' | 'idcard' | 'digit' | 'numberpad' | 'digitpad' | 'idcardpad' | 否 | 'text' | 输入框的类型 |
password | boolean | 否 | false | 是否是密码类型 |
placeholder | string | 否 | - | 占位符 |
placeholderClass | string | 否 | - | 指定 placeholder 的样式类 |
placeholderStyle | string | 否 | - | 指定 placeholder 的样式,可设置间距 |
maxLength | number | 否 | 140 | 最大长度 |
confirmType | 'done' | 'go' | 'next' | 'search' | 'send' | 否 | "done" | 设置键盘右下角按钮的文字,有效值:done(显示“完成”)、go(显示“前往”)、next(显示“下一个”)、search(显示“搜索”)、send(显示“发送”),平台不同显示的文字略有差异。 重要 只有在 type 为 text 时有效。 |
confirmHold | boolean | 否 | false | 点击键盘右下角按钮时是否保持键盘不收起状态 |
cursor | number | 否 | - | 指定 focus 时的光标位置 |
selectionStart | number | 否 | -1 | 获取光标时,选中文本对应的焦点光标起始位置,需要和 selection-end 配合使用 |
selectionEnd | number | 否 | -1 | 获取光标时,选中文本对应的焦点光标结束位置,需要和 selection-start 配合使用 |
randomNumber | boolean | 否 | false | 当 type 为 number、digit、idcard 数字键盘是否随机排列 |
enableNative | boolean | 否 | - | 是否启用 Native 渲染 |
layer | 'horizontal' | 'vertical' | 否 | 'horizontal' | input 排列位置 |
inputCls | string | 否 | - | input 输入框的样式类名 |
labelCls | string | 否 | - | label 区域的样式类名 |
value | string | 否 | - | 输入框的值 |
clear | boolean | 否 | true | 显示清除图标 |
autoFocus | boolean | 否 | false | 自动聚焦,iOS 可能会失效 |
ref | React.Ref | 否 | - | 用于操作表单的实例,有 focus 和 blur 两个方法 |
id | string | 否 | - | 表单元素 id |
name | string | 否 | - | 表单元素 name |
disabled | boolean | 否 | false | 是否禁用 |
mode | 'noraml' | 'form' | 否 | normal | 配合 Form/FormItem 组件使用时,需设置为 form |
className | string | 否 | - | 类名 |
事件
事件名 | 说明 | 类型 |
onConfirm | 点击键盘完成时触发此回调 |
|
onClear | 清除输入内容时触发此回调 |
|
onFocus | 聚焦时触发此回调 |
|
onBlur | 失焦时触发此回调 |
|
onChange | 输入时触发此回调 |
|
样式类
类名 | 说明 |
amd-input-item | 整体样式 |
amd-input-item-line | 整体样式 |
amd-input-item-layer | 左侧内容区域样式 |
amd-input-item-layer-vertical | 左侧内容区域样式 |
amd-input-item-layer-normal | 左侧内容区域样式 |
amd-input-item-label | 标签样式 |
amd-input-item-content | Input 组件样式 |
amd-input-item-clear | 清除图标区域样式 |
amd-input-item-clear-icon | 清除图标样式 |
amd-input-item-extra | 额外区域样式 |
代码示例
基本使用
index.axml 的代码示例如下:
<view>
<demo-block title="基础用法">
<input-item placeholder="请输入内容" clear="{{false}}" type="text" onChange="handleItemChange" onFocus="handleItemFocus" onBlur="handleItemBlur" onConfirm="handleItemConfirm" >
</input-item>
</demo-block>
<demo-block title="带清除按钮">
<input-item placeholder="请输入内容" clear="{{true}}" type="text" onChange="handleItemChange" onClear="handleItemClear">
</input-item>
</demo-block>
<demo-block title="禁用状态">
<input-item placeholder="被禁用的输入框" disabled="{{true}}" clear="{{true}}" type="text" onChange="handleItemChange" onClear="handleItemClear">
</input-item>
</demo-block>
</view>
index.js 的代码示例如下:
Page({
data: {
},
handleItemChange(e) {
// eslint-disable-next-line no-console
console.log('onItemChange:', e);
},
handleItemFocus(v) {
// eslint-disable-next-line no-console
console.log('focus:', v);
},
handleItemBlur(v) {
// eslint-disable-next-line no-console
console.log('blur:', v);
},
handleItemConfirm(v) {
// eslint-disable-next-line no-console
console.log('confirm:', v);
},
handleItemClear() {
// eslint-disable-next-line no-console
console.log('onItemClear');
},
});
index.acss 的代码示例如下:
.demoList {
margin-top: 12px;
margin-bottom: 12px;
padding: 0 12px
}
.amd-input-item-title {
margin-top: 12px;
font-family: PingFangSC-Regular;
font-size: 17px;
color: #666666;
margin-bottom: 8px;
text-align: center;
}
.amd-list-item-line {
position: relative;
-webkit-box-flex: 1;
-webkit-flex: 1;
flex: 1;
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
-webkit-align-self: stretch;
align-self: stretch;
max-width: 100%;
overflow: hidden;
padding: 0px 0px;
}
.amd-list-input-item-arrow {
height: 15px;
width: 7.5px;
}
.amd-list-input-item-phone {
height: 18px;
width: 16px;
}
.amd-list-input-item-code {
font-family: PingFangSC-Regular;
font-size: 17px;
color: #1677ff;
text-align: center;
}
.amd-list-input-item-line {
color: #EEEEEE;
margin: 0 12px 0 10px;
}
index.json 的代码示例如下:
{
"defaultTitle": "InputItem",
"usingComponents": {
"input-item": "antd-mini/es/InputItem/index",
"demo-block": "../../components/DemoBlock/index"
}
}