Skip to content

多行文本 Textarea

这里可以输入很多很多很多很多很多很多的文本。

基础使用

你可以在这里输入多行文本。传入 modelValue 进入受控模式。不传或者为 undefined 则为非受控模式,此时可以传入 defaultValue 属性作为默认值。

<template>
	<px-space direction="vertical">
		<px-textarea placeholder="Please input" v-model="input"></px-textarea>
		<px-textarea placeholder="Please input" default-value="!!!"></px-textarea>
	</px-space>
</template>

<script setup lang="ts">
import { ref } from 'vue'

const input = ref('Excalibur')
</script>

<style lang="css" scoped>
.px-textarea {
	width: 320px;
}
</style>

行数

rows 属性控制默认行数,minRowsmaxRows 分别设置行数的最值。当 autoResizetrue 时,时将自动调整高度。

<template>
	<px-space direction="vertical">
		<px-textarea placeholder="Please input" v-model="input" :rows="4"></px-textarea>
		<px-textarea
			placeholder="Please input"
			v-model="input"
			:rows="4"
			:min-rows="2"
			:max-rows="6"
		></px-textarea>
		<px-textarea
			placeholder="Please input"
			v-model="input"
			auto-resize
			:min-rows="2"
			:max-rows="6"
			:rows="4"
		></px-textarea>
	</px-space>
</template>

<script setup lang="ts">
import { ref } from 'vue'

const input = ref('Berserker!')
</script>

<style lang="css" scoped>
.px-textarea {
	width: 320px;
}
</style>

手动调整高度

resize 控制是否展示手动调整高度控件,默认展示。

<template>
	<px-space direction="vertical">
		<px-textarea placeholder="Please input" v-model="input"></px-textarea>
		<px-textarea placeholder="Please input" v-model="input" :resize="false"></px-textarea>
	</px-space>
</template>

<script setup lang="ts">
import { ref } from 'vue'

const input = ref('Text')
</script>

<style lang="css" scoped>
.px-textarea {
	width: 320px;
}
</style>

更多配置

Textarea 还拥有 Input 组件的部分功能。

Disabled, Readonly, Loading & Clearable

Size

Count

0
0 / 255

Status

Expose

<template>
	<px-space direction="vertical">
		<h4>Disabled, Readonly, Loading & Clearable</h4>
		<px-space>
			<px-textarea placeholder="Please input text" disabled></px-textarea>
			<px-textarea placeholder="Please input text" readonly></px-textarea>
			<px-textarea placeholder="Please input text" loading></px-textarea>
			<px-textarea placeholder="Please input text" clearable></px-textarea>
		</px-space>
		<h4>Size</h4>
		<px-space>
			<px-textarea placeholder="Please input text" size="small"></px-textarea>
			<px-textarea placeholder="Please input text"></px-textarea>
			<px-textarea placeholder="Please input text" size="large"></px-textarea>
		</px-space>
		<h4>Count</h4>
		<px-space>
			<px-textarea placeholder="Please input text" show-count> </px-textarea>
			<px-textarea placeholder="Please input text" show-count :max-length="255"> </px-textarea>
		</px-space>
		<h4>Status</h4>
		<px-space>
			<px-textarea placeholder="Please input text"> </px-textarea>
			<px-textarea placeholder="Please input text" status="success"> </px-textarea>
			<px-textarea placeholder="Please input text" status="warning"> </px-textarea>
			<px-textarea placeholder="Please input text" status="error"> </px-textarea>
		</px-space>
		<h4>Expose</h4>
		<px-space direction="vertical">
			<px-space>
				<px-button theme="info" @click="focusHandler">Focus</px-button>
				<px-button theme="info" @click="blurHandler">Blur</px-button>
				<px-button theme="info" @click="selectHandler">Select</px-button>
				<px-button theme="warning" @click="clearHandler">Clear</px-button>
			</px-space>
			<px-textarea placeholder="Please input" ref="textareaRef"></px-textarea>
		</px-space>
	</px-space>
</template>

<script setup lang="ts">
import { ref } from 'vue'
import { Textarea } from '@pixelium/web-vue'

// If on-demand import
// import { Textarea } from '@pixelium/web-vue/es'

const textareaRef = ref<InstanceType<typeof Textarea>>(null)

const focusHandler = () => {
	textareaRef.value?.focus()
}
const blurHandler = () => {
	textareaRef.value?.blur()
}
const clearHandler = () => {
	textareaRef.value?.clear()
}
const selectHandler = () => {
	textareaRef.value?.select()
}
</script>

<style lang="css" scoped>
.px-textarea {
	width: 320px;
}
</style>

API

TextareaProps

属性类型可选默认值描述版本
modelValuestring | null多行文本框的值(受控模式),支持 v-model0.0.2
defaultValuestring | null多行文本框的默认值(非受控模式)。0.0.2
rowsnumber默认行数。0.0.2
minRowsnumber1最小行数。0.0.2
maxRowsnumberInfinity最大行数。0.0.2
autoResizebooleanfalse可否自动调整高度。0.0.2
resizebooleantrue可否手动调整高度。0.0.2
placeholderstring占位符文本。0.0.2
disabledbooleanfalse是否禁用。0.0.2
readonlybooleanfalse是否只读。0.0.2
clearablebooleanfalse是否显示清除按钮。0.0.2
loadingbooleanfalse是否显示加载状态。0.0.2
size'medium' | 'large' | 'small''medium'输入框尺寸。0.0.2
maxLengthnumber最大输入长度。0.0.2
showCountbooleanfalse是否展示字数统计。0.0.2
countGraphemes(value: string) => number自定义字数统计函数,如果只传入 countGraphemes 而没有 sliceGraphemesmaxLength 的长度限制不会生效。0.0.2
sliceGraphemes(value: string, limit: number) => string自定义截取长度函数。0.0.2
status'success' | 'warning' | 'error' | 'normal''normal'表单验证状态。0.0.2
autofocusbooleanfalse原生 <input>autofocus 属性。0.0.2

TextareaEvents

事件参数描述版本
inputvalue: string, e: Event输入框输入时的回调。0.0.2
update:modelValuevalue: string更新 modelValue 的回调。0.0.2
changevalue: string, e: Event | undefined输入内容变化时的回调。0.0.2
clearvalue: string点击清除文本按钮,清除内容时的回调。0.0.2
blure: FocusEvent输入框失焦时的回调。0.0.2
focuse: FocusEvent输入框聚焦时的回调。0.0.2

TextareaSlots

插槽参数描述版本
countinputValue: number, currentLength: number, maxLength: number展示字数统计的插槽。0.0.2

TextareaExpose

属性类型可选默认值描述版本
focus() => void聚焦到当前输入框。0.0.2
blur() => void取消聚焦当前输入框。0.0.2
clear() => void清空当前输入框。0.0.2
select() => void选中当前输入框内容。0.0.2