vue3 表單搜索內(nèi)容回顯到地址欄的實(shí)例代碼
vue3 表單搜索內(nèi)容回顯到地址欄

地址欄輸入內(nèi)容回顯到form表單,同理表單輸入內(nèi)容也要回顯到地址欄中
<el-form :model="data">
<el-form-item label="ORCHID:">
<el-input
type="text"
v-model="data.orchId"
placeholder="請(qǐng)輸入ORCHID"
@keyup.enter="handleSearch"
clearable
/>
</el-form-item>
<el-form-item label="TASKID:">
<el-input
type="text"
v-model="data.taskId"
placeholder="請(qǐng)輸入TASKID"
@keyup.enter="handleSearch"
clearable
/>
</el-form-item>
<el-form-item label="WORKFLOWID:">
<el-input
type="text"
v-model="data.workflowId"
placeholder="請(qǐng)輸入WORKFLOWID"
@keyup.enter="handleSearch"
clearable
/>
</el-form-item>
<div>
<el-form-item>
<el-button class="btn-demo-item" @click="handleReset">重置</el-button>
<el-button class="btn-demo-item" type="primary" @click="handleSearch"
>查詢(xún)</el-button
>
</el-form-item>
</div>
</el-form>import { ref, watchEffect } from "vue";
import { useRoute, useRouter } from "vue-router";
let props = defineProps({
modelValue: {
type: Object,
required: true,
},
});
const data = ref({
orchId: props.modelValue.orchId ?? "",
taskId: props.modelValue.taskId ?? "",
workflowId: props.modelValue.workflowId ?? "",
});
const route = useRoute();
const router = useRouter();
let emit = defineEmits(["search"]);
const handleReset = () => {
resetForm(data.value);
handleSearch();
};
const handleSearch = () => {
router.push({ query: { ...route.query, ...data.value } });
emit("search", data.value);
};
watchEffect(() => {
data.value = {
orchId: route.query.orchId || "",
taskId: route.query.taskId || "",
workflowId: route.query.workflowId || "",
};
});Vue3根據(jù)搜索框內(nèi)容跳轉(zhuǎn)至本頁(yè)面指定位置
需求
需求:根據(jù)搜索框內(nèi)容跳轉(zhuǎn)至本頁(yè)面指定位置
搜索框是我們?cè)陂_(kāi)發(fā)各類(lèi)項(xiàng)目中出現(xiàn)率很高的一個(gè)"組件",在element-plus中名為"自動(dòng)補(bǔ)全輸入框",即我們可以根據(jù)輸入的內(nèi)容去檢索列表或者表格或者其他本頁(yè)面出現(xiàn)的元素,那我們應(yīng)該如何去實(shí)現(xiàn)這個(gè)行為呢?

思路
整體過(guò)程是這樣的:點(diǎn)擊輸入框的內(nèi)容,頁(yè)面跳轉(zhuǎn)至指定的內(nèi)容位置
實(shí)現(xiàn)過(guò)程
①首先我們必須要在頁(yè)面中引入自動(dòng)補(bǔ)全輸入框組件
template部分
<el-autocomplete v-model="state1" :fetch-suggestions="querySearch" class="inline-input w-50"
placeholder="搜索" @select="handleSelect" @change='change'>
</el-autocomplete>
srcipt部分
import { onMounted, ref } from 'vue'
interface RestaurantItem {
value: string
link: string
}
const state1 = ref('')
const restaurants = ref<RestaurantItem[]>([])
const querySearch = (queryString: string, cb: any) => {
const results = queryString
? restaurants.value.filter(createFilter(queryString))
: restaurants.value
// call callback function to return suggestions
cb(results)
}
const createFilter = (queryString: string) => {
return (restaurant: RestaurantItem) => {
return (
restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0
)
}
}
const loadAll = () => {
return [
{ value: 'vue', link: 'https://github.com/vuejs/vue' },
{ value: 'element', link: 'https://github.com/ElemeFE/element' },
{ value: 'cooking', link: 'https://github.com/ElemeFE/cooking' },
{ value: 'mint-ui', link: 'https://github.com/ElemeFE/mint-ui' },
{ value: 'vuex', link: 'https://github.com/vuejs/vuex' },
{ value: 'vue-router', link: 'https://github.com/vuejs/vue-router' },
{ value: 'babel', link: 'https://github.com/babel/babel' },
]
}
const handleSelect = (item: RestaurantItem) => {
console.log(item)
}
onMounted(() => {
restaurants.value = loadAll()
})需要解釋的是組件中的這個(gè)事件select 點(diǎn)擊選中建議項(xiàng)時(shí)觸發(fā)handleSelect 則是手動(dòng)觸發(fā)選中建議事件
這一項(xiàng)是"點(diǎn)擊輸入框內(nèi)容"
②根據(jù)選中的內(nèi)容,在對(duì)應(yīng)的表格中查找
const handleSelect = (item: RestaurantItem) => {
console.log(item)
}在這個(gè)函數(shù)中,我們可以log item,可以發(fā)現(xiàn)item就是loadAll中的內(nèi)容,我們可以給loadAll里的內(nèi)容都綁定一個(gè)id值,例如
{ id:1,value: 'vue', link: 'https://github.com/vuejs/vue' },然后我們?cè)趯?duì)應(yīng)的表格的內(nèi)容也添加一個(gè)id,這里就不舉例了,至此,我們可以判斷,如果loadAll里的id==表格里某一項(xiàng)的id,那就是我們需要的對(duì)象
for(let i=0;i<表格長(zhǎng)度;i++){
let id = 表格[i].id
if (item.id == 表格[i].id) {
document.getElementById(id).scrollIntoView();
}③跳轉(zhuǎn)
document.getElementById(id).scrollIntoView();
整體的實(shí)現(xiàn)思路是:拿到搜索框選中的內(nèi)容的id,與此同時(shí)給表格中的每一項(xiàng)內(nèi)容都添加id,然后在select事件中,利用for循環(huán)去尋找搜索框id==表格內(nèi)容id的對(duì)象,最后是利用scrollIntoView()方法進(jìn)行跳轉(zhuǎn)
補(bǔ)充內(nèi)容
需要補(bǔ)充的是,如何獲取到對(duì)應(yīng)的元素?一是v-for循環(huán),給每個(gè)對(duì)象添加id,格式是 v-for = value in 表格 :id="value.id" 二是通過(guò)綁定ref函數(shù)獲取
到此這篇關(guān)于vue3 表單搜索內(nèi)容回顯到地址欄的文章就介紹到這了,更多相關(guān)vue3表單搜索內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue實(shí)現(xiàn)Word/Excel/PDF文件預(yù)覽的詳細(xì)步驟
vue-office是一款專(zhuān)門(mén)為 Vue 設(shè)計(jì)的辦公文檔預(yù)覽組件庫(kù),支持 ??Word(.docx),Excel(.xlsx/.xls),PDF?? 等主流格式,下面我們就來(lái)看看具體實(shí)現(xiàn)步驟吧2025-07-07
基于vue實(shí)現(xiàn)web端超大數(shù)據(jù)量表格的卡頓解決
這篇文章主要介紹了基于vue實(shí)現(xiàn)web端超大數(shù)據(jù)量表格的卡頓解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
vue中pdf.js的使用之pdf顯示、跳轉(zhuǎn)指定頁(yè)面及高亮關(guān)鍵詞
pdf.js是由Mozilla基金會(huì)開(kāi)發(fā)的一個(gè)純JavaScript庫(kù),用于在Web瀏覽器中顯示PDF文檔,這篇文章主要介紹了vue中pdf.js的使用之pdf顯示、跳轉(zhuǎn)指定頁(yè)面及高亮關(guān)鍵詞的相關(guān)資料,需要的朋友可以參考下2025-08-08
基于Vue3+Node.js實(shí)現(xiàn)實(shí)時(shí)可視化監(jiān)控系統(tǒng)
在日常運(yùn)維和開(kāi)發(fā)工作中,服務(wù)器監(jiān)控是必不可少的環(huán)節(jié),市面上有不少優(yōu)秀的監(jiān)控方案,但對(duì)于中小型團(tuán)隊(duì)或個(gè)人開(kāi)發(fā)者來(lái)說(shuō),這些工具往往過(guò)于復(fù)雜,學(xué)習(xí)成本較高,本文將介紹我自己開(kāi)發(fā)的 ServWatch 監(jiān)控系統(tǒng)——一個(gè)輕量級(jí)、易部署、界面美觀(guān)的實(shí)時(shí)監(jiān)控解決方案2026-02-02
Vue3.0實(shí)現(xiàn)圖片預(yù)覽組件(媒體查看器)功能
最近項(xiàng)目中有個(gè)場(chǎng)景,一組圖片、視頻、音頻、文件數(shù)據(jù),要求點(diǎn)擊圖片可以放大預(yù)覽,左右可以切換音視頻、文件,支持鼠標(biāo)及各種鍵控制?縮放,左右旋轉(zhuǎn),移動(dòng)等功能,這篇文章主要介紹了Vue3.0實(shí)現(xiàn)圖片預(yù)覽組件(媒體查看器),需要的朋友可以參考下2023-12-12
vue調(diào)取電腦攝像頭實(shí)現(xiàn)拍照功能
這篇文章主要為大家詳細(xì)介紹了vue調(diào)取電腦攝像頭實(shí)現(xiàn)拍照功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
Vue.js實(shí)現(xiàn)watch屬性的示例詳解
本文討論了watch函數(shù)是如何利用副作用函數(shù)和options進(jìn)行封裝實(shí)現(xiàn)的,也通過(guò)調(diào)度函數(shù)去控制回調(diào)函數(shù)的立即執(zhí)行和執(zhí)行時(shí)機(jī),還可以解決競(jìng)態(tài)問(wèn)題,感興趣的可以了解一下2022-04-04
解決vue項(xiàng)目中某一頁(yè)面不想引用公共組件app.vue的問(wèn)題
這篇文章主要介紹了解決vue項(xiàng)目中某一頁(yè)面不想引用公共組件app.vue的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08

