검색 필터링 유지

This commit is contained in:
nevermoregb 2025-03-28 16:18:06 +09:00
parent 5af68dcf3d
commit ad3af31e37
2 changed files with 47 additions and 46 deletions

View File

@ -1,17 +1,8 @@
<template> <template>
<form @submit.prevent="search"> <form @submit.prevent="search">
<div class="input-group mb-3 d-flex"> <div class="input-group mb-3 d-flex">
<input <input type="text" class="form-control" placeholder="Search" v-model="searchQuery" @input="preventLeadingSpace" />
type="text" <button type="submit" class="btn btn-primary">
class="form-control"
placeholder="Search"
v-model="searchQuery"
@input="preventLeadingSpace"
/>
<button
type="submit"
class="btn btn-primary"
>
<i class="bx bx-search bx-md"></i> <i class="bx bx-search bx-md"></i>
</button> </button>
</div> </div>
@ -19,44 +10,54 @@
</template> </template>
<script setup> <script setup>
import { ref } from "vue"; import { ref, watch } from 'vue';
const props = defineProps({ const props = defineProps({
maxlength: { maxlength: {
type: Number, type: Number,
default: 30, default: 30,
required: false, required: false,
}, },
}); initKeyword: {
type: String,
},
});
const emits = defineEmits(["update:data"]); const emits = defineEmits(['update:data']);
const searchQuery = ref(""); const searchQuery = ref('');
// ( or ) watch(
const search = () => { () => props.initKeyword,
const trimmedQuery = searchQuery.value.trimStart(); (newVal, oldVal) => {
if (trimmedQuery === "") { searchQuery.value = newVal;
emits("update:data", ""); },
return; );
}
if (trimmedQuery.length < 2 ) {
alert("검색어는 최소 2글자 이상 입력해주세요.");
searchQuery.value = '';
return;
}
// // ( or )
if (trimmedQuery.length > props.maxlength) { const search = () => {
searchQuery.value = trimmedQuery.slice(0, props.maxlength); const trimmedQuery = searchQuery.value.trimStart();
} else { if (trimmedQuery === '') {
searchQuery.value = trimmedQuery; emits('update:data', '');
} return;
}
if (trimmedQuery.length < 2) {
alert('검색어는 최소 2글자 이상 입력해주세요.');
searchQuery.value = '';
return;
}
emits("update:data", searchQuery.value); //
}; if (trimmedQuery.length > props.maxlength) {
searchQuery.value = trimmedQuery.slice(0, props.maxlength);
} else {
searchQuery.value = trimmedQuery;
}
// emits('update:data', searchQuery.value);
const preventLeadingSpace = () => { };
searchQuery.value = searchQuery.value.trimStart();
}; //
const preventLeadingSpace = () => {
searchQuery.value = searchQuery.value.trimStart();
};
</script> </script>

View File

@ -4,7 +4,7 @@
<div class="card-header d-flex flex-column"> <div class="card-header d-flex flex-column">
<!-- 검색창 --> <!-- 검색창 -->
<div class="mb-3 w-100"> <div class="mb-3 w-100">
<search-bar @update:data="search" @keyup.enter="searchOnEnter" class="flex-grow-1" /> <search-bar @update:data="search" @keyup.enter="searchOnEnter" :initKeyword="searchText" class="flex-grow-1" />
</div> </div>
<div class="d-flex align-items-center" style="gap: 15px"> <div class="d-flex align-items-center" style="gap: 15px">
<!-- 리스트 갯수 선택 --> <!-- 리스트 갯수 선택 -->