ایجاد Autocomplete دوخطی با جاوااسکریپت و فایل json
سلام دوستان
این لینک رو ببینید:
میخوام با تایپ مثلا کلمه برگ داخل input لیست پیشنهادی رو مثل این نشون بده و نمیخوام از دیتابیس استفاده کنم.
میخوام از فایل json یا text بخونه.
حسابی گیر افتادم
ممنون میشم کمکم کنید.
تصویر رو ببینید

تشکر بابت راهنمایی
پاسخ هوش مصنوعی
برای ایجاد autocomplete دوخطی با جاوااسکریپت و استفاده از یک فایل JSON، می توانید از کد زیر استفاده کنید:
// فایل JSON (data.json)
[
{"name": "برگ سبز", "description": "این یک برگ سبز است."},
{"name": "برگ خشک", "description": "این یک برگ خشک است."},
{"name": "برگ درخت", "description": "این برگ از درخت است."}
]
// کد HTML
// کد جاوااسکریپت
fetch('data.json')
.then(response => response.json())
.then(data => {
const input = document.getElementById('autocomplete-input');
const resultsContainer = document.getElementById('autocomplete-results');
input.addEventListener('input', () => {
const query = input.value.toLowerCase();
resultsContainer.innerHTML = '';
if (query) {
const filteredData = data.filter(item => item.name.toLowerCase().includes(query));
filteredData.forEach(item => {
const resultItem = document.createElement('div');
resultItem.innerHTML = `${item.name}${item.description}
`;
resultsContainer.appendChild(resultItem);
});
}
});
})
.catch(error => console.error('خطا در بارگذاری فایل JSON:', error));
در کد بالا، ابتدا فایل JSON که شامل لیستی از اقلام است بارگذاری می شود. سپس با استفاده از یک input برای جستجو، موارد را فیلتر کرده و نتایج را نمایش می دهیم.
شما میتونید هر چیزی رو به AutoComplete اضافه کنید. مثلا ممکنه قصد داشته باشید یک عکس کوچک در کنار متن ظاهر بشه.
تصویر زیر رو ببینید

این لینک رو برای این کار بخونید Show image in JQuery ui autocomplete
اما برای موردی که شما می خواید هم از این کدها می تونید استفاده کنید. البته کمی تغییرات و استایل دهی لازم داره.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI(Autocomplete)</title>
<link rel="stylesheet" href="//apps.bdimg.com/libs/jqueryui/1.10.4/css/jquery-ui.min.css">
<script src="//apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//apps.bdimg.com/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<link rel="stylesheet" href="jqueryui/style.css">
<style>
#project-label {
display: block;
font-weight: bold;
margin-bottom: 1em;
}
#project-icon {
float: left;
height: 32px;
width: 32px;
}
#project-description {
margin: 0;
padding: 0;
}
</style>
<script>
$(function() {
var projects = [
{
value: "jquery",
label: "jQuery",
desc: "the write less, do more, JavaScript library",
icon: "jquery_32x32.png"
},
{
value: "jquery-ui",
label: "jQuery UI",
desc: "the official user interface library for jQuery",
icon: "jqueryui_32x32.png"
},
{
value: "sizzlejs",
label: "Sizzle JS",
desc: "a pure-JavaScript CSS selector engine",
icon: "sizzlejs_32x32.png"
}
];
$( "#project" ).autocomplete({
minLength: 0,
source: projects,
focus: function( event, ui ) {
$( "#project" ).val( ui.item.label );
return false;
},
select: function( event, ui ) {
$( "#project" ).val( ui.item.label );
$( "#project-id" ).val( ui.item.value );
$( "#project-description" ).html( ui.item.desc );
$( "#project-icon" ).attr( "src", "images/" + ui.item.icon );
return false;
}
})
.data( "ui-autocomplete" )._renderItem = function( ul, item ) {
return $( "<li>" )
.append( "<a>" + item.label + "<br>" + item.desc + "</a>" )
.appendTo( ul );
};
});
</script>
</head>
<body>
<div id="project-label"></div>
<img id="project-icon" src="images/transparent_1x1.png" class="ui-state-default" alt="">
<input id="project">
<input type="hidden" id="project-id">
<p id="project-description"></p>
</body>
</html>
خروجی دستورات بالا رو توی تصویر زیر می بینید

می بینید هر واژه ای که وارد می کنید آیتم های مربوطه به همراه یک خط توضیحات نمایش داده میشه. حالا اون خط توضیحات رو میتونید استایل بهش بدید و مثلا کوچیکتر و کمرنگتر کنیدتا مشابه اون چیزی که میخواید بشه.
برای تست کدها میتونید اینجا کلیک کنید.
- دسترسی به پکیج های nuget در زمان قطع نت بین الملل
- نمایش آخرین ردیف دیتاگیرید موقع لود در wpf
- مشکل اینترنت جهانی و عدم دسترسی به cdnjs.cloudflare.com
- مشکل در نصب sql server 2022
- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- جلوگیری از انتشار غیرمجاز مطالب در کانال های تلگرامی
- تفاوت های تلگرام و واتس اپ چیست ؟
- حذف فایلها و دستورات Css و JavaScript اضافی
- جمع کردن (Collapse) منوی جانبی موقع لود فرم در پنل AdminLte
- دلیل خطای Identifier 'X' has already been declared در جی کویری چیست ؟
- جدا کردن سه رقم سه رقم اعداد در input با جاوااسکریپت
- محدود کردن تایپ عدد یا حروف با جاوا اسکریپت
- مقایسه بین فریم ورک های Angular و React.js و Vue js
- نمایش پیغام گرافیکی با جی کویری
- تفاوت Class Component و Functional Component در React.js چیست ؟
- پراپس (Props) در React.js چیست ؟
- مقایسه مقدار اینپوت باکس با type آن در جی کویری