Textarea 여러 줄 입력창
텍스트를 입력하는 영역이에요.
출처: 문서
본문
언제 사용하나요?
직접 글자를 입력해야 하고 내용이 많을 때 사용해요.
기본 사용법
:::demo
<template>
<div class="mb-0">Default</div>
<d-textarea class="mb-2" v-model="valueDefault" autofocus id="textArea"></d-textarea>
<div class="mb-0">Disabled</div>
<d-textarea class="mb-2" placeholder="我是被禁用状态" disabled></d-textarea>
<div class="mb-0">Error</div>
<d-textarea v-model="valueError" placeholder="我是出错状态" error></d-textarea>
</template>
<script>
import { defineComponent, ref } from 'vue';
export default defineComponent({
setup() {
const valueDefault = ref('我是默认值');
const valueError = ref('');
return {
valueDefault,
valueError,
};
},
});
</script>
:::
입력창 높이 조절
:::demo
<template>
<d-textarea v-model="valueHeight" :rows="5" placeholder="文本域高度可通过 rows 属性控制"></d-textarea>
</template>
<script>
import { defineComponent, ref } from 'vue';
export default defineComponent({
setup() {
const valueHeight = ref('');
return {
valueHeight,
};
},
});
</script>
:::
높이 자동 조절 입력창
autosize 속성을 설정하면 내용에 맞춰 높이가 자동 조절돼요. autosize에 최소·최대 높이를 담은 객체를 넘겨 입력창이 알아서 조절되게 할 수도 있어요.
:::demo
<template>
<d-textarea class="mb-2" v-model="valueAutoSize1" autosize placeholder="请输入"></d-textarea>
<d-textarea v-model="valueAutoSize2" :autosize="{ minRows: 2, maxRows: 4 }" placeholder="请输入" resize="both"></d-textarea>
</template>
<script>
import { defineComponent, ref } from 'vue';
export default defineComponent({
setup() {
const valueAutoSize1 = ref('');
const valueAutoSize2 = ref('');
return {
valueAutoSize1,
valueAutoSize2,
};
},
});
</script>
:::
크기 조절
:::demo
<template>
<div class="mb-0">vertical</div>
<d-textarea class="mb-2" placeholder="我可以缩放" resize="vertical"></d-textarea>
<div class="mb-0">horizontal</div>
<d-textarea class="mb-2" resize="horizontal" placeholder="请输入"></d-textarea>
<div class="mb-0">both</div>
<d-textarea class="mb-2" resize="both" placeholder="请输入"></d-textarea>
<div class="mb-0">none</div>
<d-textarea class="mb-2" resize="none" placeholder="请输入"></d-textarea>
<div class="mb-0">inherit</div>
<d-textarea class="mb-2" resize="inherit" placeholder="请输入"></d-textarea>
</template>
:::
글자 수 표시
:::demo
<template>
<div class="mb-0">默认</div>
<d-textarea class="mb-2" v-model="valueCount1" show-count placeholder="请输入"></d-textarea>
<div class="mb-0">显示最大字数</div>
<d-textarea v-model="valueCount2" show-count maxlength="20" placeholder="请输入"></d-textarea>
</template>
<script>
import { defineComponent, ref } from 'vue';
export default defineComponent({
setup() {
const valueCount1 = ref('');
const valueCount2 = ref('');
return {
valueCount1,
valueCount2,
};
},
});
</script>
:::
이벤트 응답
:::demo
<template>
<d-textarea
v-model="value1"
show-count
:max-length="20"
placeholder="打开控制台输入文字看看"
@update:modelValue="onUpdate"
@change="onChange"
@focus="onFocus"
@keydown="onKeydown"
></d-textarea>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const onUpdate = (value) => {
console.log('【d-textarea update value】:', value);
};
const onChange = (value) => {
console.log('【d-textarea change value】:', value);
};
const onFocus = (e) => {
console.log('【d-textarea onFocus】:', e);
};
const onKeydown = (e) => {
console.log('【d-textarea onKeydown:', e);
};
const value1 = ref('');
return {
onUpdate,
onChange,
onFocus,
onKeydown,
value1,
};
},
};
</script>
:::
Textarea 파라미터
| 파라미터 | 타입 | 기본값 | 설명 | Demo 링크 |
|---|---|---|---|---|
| v-model | string |
- | 선택, 텍스트 입력창 바인딩 값 | 기본 사용법 |
| placeholder | string |
- | 선택, 텍스트 입력창 placeholder | 기본 사용법 |
| disabled | boolean |
false | 선택, 텍스트 입력창 비활성화 여부 | 기본 사용법 |
| autofocus | boolean |
false | 선택, 텍스트 입력창 자동 포커스 여부 | 기본 사용법 |
| error | boolean |
false | 선택, 텍스트 입력창 입력 오류 표시 여부 | 기본 사용법 |
| resize | Resize | 'none' | 선택, 텍스트 입력창 크기 조정 가능 여부 | 크기 조정 |
| show-count | boolean |
false | 선택, 텍스트 입력창 글자 수 표시 여부 | 글자 수 표시 |
| rows | number / string |
2 | 선택, 텍스트 입력창 높이 제어 | 텍스트박스 높이 제어 |
| autosize | boolean / object |
false | textarea 높이 자동 맞춤 여부. 객체 허용, 예: { minRows: 2, maxRows: 6 } |
자동 높이 텍스트박스 |
| show-glow-style | boolean |
true | 선택, 호버 발광 효과 표시 여부 |
Textarea 이벤트
| 이벤트명 | 콜백 파라미터 | 설명 | Demo 링크 |
|---|---|---|---|
| update | Function(value: string) |
텍스트 입력창 콘텐츠 변경(실시간 트리거) | 이벤트 응답 |
| focus | Function(event: Event) |
텍스트 입력창 포커스 획득 | 이벤트 응답 |
| blur | Function(event: Event) |
텍스트 입력창 포커스 상실 | 이벤트 응답 |
| change | Function(value: string) |
텍스트 입력창 콘텐츠 변경(포커스 상실 시 트리거) | 이벤트 응답 |
| keydown | Function(event: Event) |
텍스트 입력창 키 입력 | 이벤트 응답 |
Textarea 타입 정의
Resize
type Resize = 'none' | 'vertical' | 'horizontal' | 'both' | 'inherit';
더 알아보기 (Learn more)
Textarea로 여러 줄 텍스트를 입력받을 수 있어요. 더 자세한 내용은 공식 문서를 참고하세요.