Skip to content
# t-keyboard-input

KeyboardInput 键盘输入框组件 — 带工具栏和扩展面板的输入组件,适用于评论框、聊天输入等场景。

t-keyboard-input 组件介绍 ​

t-keyboard-input 是一个带底部工具栏和扩展面板的输入组件。支持图片选择、表情选择、@提及和发送按钮,面板随键盘弹出。常用于评论发布、聊天消息输入等场景,同时支持 @ 人物选择。

t-keyboard-input 基础用法 ​

vue
<template>
	<view class="p-15 h-100%">
		<t-card class="mb-15 r-10"
				title="t-keyboard-input 键盘输入"
				sub-title="带工具栏和扩展面板的键盘输入组件,常用于评论/聊天输入场景,支持图片选择、表情选择和 @ 提及。"></t-card>
		<t-keyboard-input v-model="inputValue"
						  v-model:imageList="imageList"
						  placeholder="说点什么..."
						  send-text="发送"
						  :show-send="true"
						  :show-toolbar="true"
						  :show-image="true"
						  :show-at="true"
						  :show-emoji="true"
						  :atUsers="[{name: '张三'}, {name: '李四'}, {name: '王小美'}, {name: '产品同学'}, {name: '前端小赵'}, {name: '设计师Ada'}]"
						  :emojiList="['👏', '😄', '😆', '🥹', '😭', '👍', '😁', '🤣']"
						  :maxImages="9"
						  :maxlength="500"
						  :bottomOffset="0"
						  :zIndex="999"
						  @send="handleSend"
						  @focus="handleFocus"
						  @blur="handleBlur"
						  @at="handleAt"
						  @emoji="handleEmoji"
						  @imagechange="handleImageChange">
		</t-keyboard-input>
	</view>
</template>

<script setup
		lang="uts">
	const inputValue = ref<string>('')
	const imageList = ref<string[]>([])

	function handleSend(payload : UTSJSONObject) {
		uni.showToast({
			title: '已发送',
			icon: 'success'
		})
	}

	function handleFocus(event : any) {
		// console.log('focus', event)
	}

	function handleBlur(event : any) {
		// console.log('blur', event)
	}

	function handleAt(event : UTSJSONObject) {
		// console.log('at', event)
	}

	function handleEmoji(event : UTSJSONObject) {
		console.log('emoji', event)
	}

	function handleImageChange(event : UTSJSONObject) {
		console.log('imagechange', event)
	}
	function hide() {
		uni.hideKeyboard()
	}
</script>

t-keyboard-input API ​

Props ​

属性名说明类型默认值
modelValue输入框双向绑定的文本值String''
imageList已选图片路径列表String[][]
placeholder输入框占位提示文案String'请输入内容'
sendText发送按钮文本标签String'发送'
showSend是否显示发送按钮Booleantrue
showToolbar是否显示底部工具栏Booleantrue
showImage是否显示图片选择入口Booleantrue
showAt是否显示 @ 提及入口Booleantrue
showEmoji是否显示表情选择入口Booleantrue
atUsers@ 面板中可选的用户列表String[]['张三', '李四', '王小美', '产品同学', '前端小赵', '设计师Ada']
disabled是否禁用输入Booleanfalse
maxlength输入最大字符数Number500
confirmType键盘确认按钮类型String'send'
holdKeyboard点击发送后保持键盘打开Booleantrue
confirmHold点击确认后保持键盘打开Booleantrue
bottomOffset组件底部偏移量,用于避开安全区域Number0
zIndex组件 z-index 层级Number999
autoFocus是否自动聚焦输入框Booleanfalse
maxImages最多可选图片数量Number9
emojiList表情面板中可选 emoji 列表String[]['👏', '😄', '😆', '🥹', '😭', '👍', '😁', '🤣']

Events ​

事件名说明回调参数
update:modelValue输入框内容变化string
update:imageList图片列表变化string[]
send点击发送或键盘确认{ value: string, images: string[] }
focus输入框聚焦FocusEvent
blur输入框失焦BlurEvent
keyboardheightchange键盘高度变化KeyboardHeightChangeEvent
confirm键盘确认按钮点击ConfirmEvent
at选择 @ 用户{ user: string }
emoji选择 emoji{ emoji: string }
imagechange图片列表变化{ images: string[] }

Slots ​

无内置插槽。

注意事项 ​

  • 输入框默认 confirm-type="send",键盘回车键显示为发送
  • 图片选择面板、表情面板、@面板为互斥显示,每次只能展开一个
  • 通过 bottomOffset 适配底部安全区域,例如 iPhone 底部横条
  • 发送时默认不清空键盘,如需关闭可设置 holdKeyboard="false"
  • emojiList 可自定义替换