輸入多行文字 - daniel-qa/Vue GitHub Wiki
將貼上內容,格式化為一行一行的內容,但編輯時,不進行干涉; 離離焦點時,再進行處理
<el-input v-model="teacherIdsInputRaw"
@blur="formatInput"
@paste="handlePaste"
type="textarea"
:rows="20"
placeholder="請輸入教師 ID"
clearable />
const handlePaste = () => {
// 等待 paste 完成後處理
setTimeout(() => {
formatInput();
}, 0);
};
事件 | 觸發時機 | 用途範例 | 說明 |
---|---|---|---|
@blur="formatInput" |
欄位失去焦點時 | 格式化輸入、去空白、多餘逗號 | 使用者輸入完、點離開時觸發 |
@paste="handlePaste" |
使用者貼上時 | 攔截貼上內容、清理換行、轉逗號分隔 | 阻止原始貼上,改用處理後內容 |
<div style="width: 700px;">
<el-input v-model="teacherIdsInput"
type="textarea"
:rows="8"
placeholder="請輸入教師 ID(用逗號分隔)"
clearable />
<div style="margin-top: 8px;">
總共 {{ teacherIdList.length }} 位教師
</div>
</div>
// 接收名單(輸入 TMID)
const teacherIdsInput = ref('1629875867,1929825867, 2929182867')
const teacherIdList = computed(() => {
return teacherIdsInput.value
.split(',')
.map(id => id.trim())
.filter(id => id !== '')
})