1
1
<template >
2
2
<div class =" searchInp" >
3
3
<n-input
4
- :class =" inputActive ? 'input focus' : 'input'"
4
+ :class =" site.searchInputActive ? 'input focus' : 'input'"
5
5
:input-props =" { autoComplete: false }"
6
+ ref =" searchInpRef"
6
7
round
7
8
clearable
8
9
placeholder =" 搜索音乐/视频"
14
15
<template #prefix >
15
16
<n-icon
16
17
size =" 16"
17
- :class =" inputActive ? 'active' : ''"
18
+ :class =" site.searchInputActive ? 'active' : ''"
18
19
:component =" Search"
19
20
/>
20
21
</template >
23
24
<n-card
24
25
class =" list"
25
26
v-show ="
26
- inputActive &&
27
+ site.searchInputActive &&
27
28
!inputValue &&
28
29
(music.getSearchHistory[0] || searchData.hot[0])
29
30
"
93
94
<CollapseTransition easing =" ease-in-out" >
94
95
<n-card
95
96
class =" list"
96
- v-show =" inputActive && inputValue && searchData.suggest"
97
+ v-show =" site.searchInputActive && inputValue && searchData.suggest"
97
98
content-style =" padding: 0"
98
99
>
99
100
<n-scrollbar >
@@ -195,20 +196,21 @@ import {
195
196
import CollapseTransition from " @ivanv/vue-collapse-transition/src/CollapseTransition.vue" ;
196
197
import debounce from " @/utils/debounce" ;
197
198
import { useRouter } from " vue-router" ;
198
- import { musicStore , settingStore } from " @/store" ;
199
+ import { musicStore , settingStore , siteStore } from " @/store" ;
200
+
199
201
const router = useRouter ();
200
202
const music = musicStore ();
201
203
const setting = settingStore ();
204
+ const site = siteStore ();
202
205
203
206
// 输入框内容
204
207
const inputValue = ref (null );
205
-
206
- // 输入框激活状态
207
- const inputActive = ref (false );
208
+ const searchInpRef = ref (null );
208
209
209
210
// 输入框激活事件
210
211
const inputFocus = () => {
211
- inputActive .value = true ;
212
+ searchInpRef .value ? .focus ();
213
+ site .searchInputActive = true ;
212
214
music .showPlayList = false ;
213
215
getSearchHotData ();
214
216
};
@@ -274,7 +276,8 @@ const toSearch = (val, type) => {
274
276
const inputkeydown = (e ) => {
275
277
if (e .key === " Enter" && inputValue .value != null ) {
276
278
console .log (" 执行搜索" + inputValue .value .trim ());
277
- inputActive .value = false ;
279
+ searchInpRef .value ? .blur ();
280
+ site .searchInputActive = false ;
278
281
// 写入搜索历史
279
282
music .setSearchHistory (inputValue .value .trim ());
280
283
router .push ({
@@ -306,13 +309,15 @@ onMounted(() => {
306
309
getSearchHotData ();
307
310
// 搜索框失焦
308
311
document .addEventListener (" click" , () => {
309
- inputActive .value = false ;
312
+ searchInpRef .value ? .blur ();
313
+ site .searchInputActive = false ;
310
314
});
311
315
});
312
316
313
317
onUnmounted (() => {
314
318
document .removeEventListener (" click" , () => {
315
- inputActive .value = false ;
319
+ searchInpRef .value ? .blur ();
320
+ site .searchInputActive = false ;
316
321
});
317
322
});
318
323
@@ -333,7 +338,10 @@ watch(
333
338
watch (
334
339
() => music .showPlayList ,
335
340
(val ) => {
336
- if (val) inputActive .value = false ;
341
+ if (val) {
342
+ searchInpRef .value ? .blur ();
343
+ site .searchInputActive = false ;
344
+ }
337
345
}
338
346
);
339
347
< / script>
0 commit comments