彈出選擇框支持鍵盤事件

html代碼
<!-- 入倉類型選擇 --> <el-dialog v-model="RCVisible" title="選擇" destroy-on-close width="400px" @keydown="selectRC($event)" > <el-table tooltip-effect="dark" :data="RCselectData" row-key="ID" highlight-current-row="true" border style="width:100%" @row-dblclick="RCSelectClick" ref="tableRC" > <el-table-column prop="入倉類型" label="入倉類型" width="360" /> </el-table> </el-dialog>
js代碼
//入倉類型回車事件 const getRCsubmit = (event) => { GetRC() } const RCVisible = ref(false) const RCselectData = reactive([]) //獲取倉庫信息 const GetRC = async () => { const data = [{'入倉類型':'產(chǎn)品入庫'},{'入倉類型':'委外入庫'},{'入倉類型':'采購入庫'}] //選擇框數(shù)據(jù) RCselectData.splice(0, RCselectData.length, ...data) setRCCurrent(RCselectData[0]) RCVisible.value=true } //選擇 const RCSelectClick = (row, column, event) => { const { 入倉類型 } = row formData.value.入倉類型=入倉類型 RCVisible.value = false } const tableRC=ref() const setRCCurrent = (row) => { setTimeout(()=>{ tableRC.value?.setCurrentRow(row) const { 入倉類型 } = row formData.value.入倉類型=入倉類型 }) } const RCIndex = ref(0); const RCCurrent = ref(0);
//按鍵事件 const selectRC = (event) => { if (event.keyCode === 40) { // 向下箭頭 if (RCIndex.value < RCselectData.length - 1) { RCIndex.value++; setRCCurrent(RCselectData[RCIndex.value]); } else { RCIndex.value = 0; setRCCurrent(RCselectData[RCIndex.value]); // 到達(dá)最后一行時回到第一行 } } else if (event.keyCode === 38) { // 向上箭頭 if (RCIndex.value > 0) { RCIndex.value--; setRCCurrent(RCselectData[RCIndex.value]); } else { RCIndex.value = RCselectData.length - 1; setRCCurrent(RCselectData[RCIndex.value]); // 到達(dá)第一行時回到最后一行 } } else if (event.keyCode === 13) { // 回車鍵 RCVisible.value = false } }

浙公網(wǎng)安備 33010602011771號