<!DOCTYPE html>
<html>
<head>
<title>多选示例</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
<style>
.selected {
background-color: yellow;
}
</style>
</head>
<body class="container">
<h2 class="mt-4">多选示例</h2>
<div class="form-group mt-3">
<input type="text" class="form-control" id="searchInput" placeholder="搜索...">
</div>
<div class="mt-3" id="loading" style="display: none;">加载中...</div>
<ul class="list-group mt-3" id="results"></ul>
<p class="mt-3">已选择:</p>
<ul class="list-group" id="selectedItems"></ul>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<script>
$(document).ready(function() {
const searchInput = $('#searchInput');
const loading = $('#loading');
const results = $('#results');
const selectedItems = $('#selectedItems');
let selected = [];
searchInput.on('input', function() {
const searchTerm = $(this).val();
// 显示加载状态
loading.show();
results.empty();
// 模拟远程搜索,这里使用setTimeout来模拟延迟
setTimeout(function() {
// 模拟从服务器获取数据
const data = getRemoteData(searchTerm);
renderResults(data);
loading.hide();
}, 1000);
});
// 添加或移除已选择项
results.on('click', 'li', function() {
const item = $(this).text();
if (selected.includes(item)) {
selected = selected.filter(val => val !== item);
$(this).removeClass('list-group-item-primary');
} else {
selected.push(item);
$(this).addClass('list-group-item-primary');
}
updateSelectedItems();
});
function renderResults(data) {
results.empty();
data.forEach(function(item) {
const listItem = $('<li class="list-group-item">').text(item);
if (selected.includes(item)) {
listItem.addClass('list-group-item-primary');
}
results.append(listItem);
});
}
function updateSelectedItems() {
selectedItems.empty();
selected.forEach(function(item) {
selectedItems.append($('<li class="list-group-item">').text(item));
});
}
function getRemoteData(searchTerm) {
// 模拟从服务器获取数据
const data = [
'选项1',
'选项2',
'选项3',
'选项4',
'选项5',
'选项6',
];
// 过滤匹配搜索条件的项
return data.filter(item => item.toLowerCase().includes(searchTerm.toLowerCase()));
}
});
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>多选示例</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
<style>
.selected {
background-color: yellow;
}
</style>
</head>
<body class="container">
<h2 class="mt-4">多选示例</h2>
<div class="form-group mt-3">
<input type="text" class="form-control" id="searchInput" placeholder="搜索...">
</div>
<div class="mt-3" id="loading" style="display: none;">加载中...</div>
<ul class="list-group mt-3" id="results"></ul>
<p class="mt-3">已选择:</p>
<ul class="list-group" id="selectedItems"></ul>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<script>
$(document).ready(function() {
const searchInput = $('#searchInput');
const loading = $('#loading');
const results = $('#results');
const selectedItems = $('#selectedItems');
let selected = [];
searchInput.on('input', function() {
const searchTerm = $(this).val();
// 显示加载状态
loading.show();
results.empty();
// 模拟远程搜索,这里使用setTimeout来模拟延迟
setTimeout(function() {
// 模拟从服务器获取数据
const data = getRemoteData(searchTerm);
renderResults(data);
loading.hide();
}, 1000);
});
// 添加或移除已选择项
results.on('click', 'li', function() {
const item = $(this).text();
if (selected.includes(item)) {
selected = selected.filter(val => val !== item);
$(this).removeClass('list-group-item-primary');
} else {
selected.push(item);
$(this).addClass('list-group-item-primary');
}
updateSelectedItems();
});
function renderResults(data) {
results.empty();
data.forEach(function(item) {
const listItem = $('<li class="list-group-item">').text(item);
if (selected.includes(item)) {
listItem.addClass('list-group-item-primary');
}
results.append(listItem);
});
}
function updateSelectedItems() {
selectedItems.empty();
selected.forEach(function(item) {
selectedItems.append($('<li class="list-group-item">').text(item));
});
}
function getRemoteData(searchTerm) {
// 模拟从服务器获取数据
const data = [
'选项1',
'选项2',
'选项3',
'选项4',
'选项5',
'选项6',
];
// 过滤匹配搜索条件的项
return data.filter(item => item.toLowerCase().includes(searchTerm.toLowerCase()));
}
});
</script>
</body>
</html>
<!DOCTYPE html> <html> <head> <title>多选示例</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css"> <style> .selected { background-color: yellow; } </style> </head> <body class="container"> <h2 class="mt-4">多选示例</h2> <div class="form-group mt-3"> <input type="text" class="form-control" id="searchInput" placeholder="搜索..."> </div> <div class="mt-3" id="loading" style="display: none;">加载中...</div> <ul class="list-group mt-3" id="results"></ul> <p class="mt-3">已选择:</p> <ul class="list-group" id="selectedItems"></ul> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script> <script> $(document).ready(function() { const searchInput = $('#searchInput'); const loading = $('#loading'); const results = $('#results'); const selectedItems = $('#selectedItems'); let selected = []; searchInput.on('input', function() { const searchTerm = $(this).val(); // 显示加载状态 loading.show(); results.empty(); // 模拟远程搜索,这里使用setTimeout来模拟延迟 setTimeout(function() { // 模拟从服务器获取数据 const data = getRemoteData(searchTerm); renderResults(data); loading.hide(); }, 1000); }); // 添加或移除已选择项 results.on('click', 'li', function() { const item = $(this).text(); if (selected.includes(item)) { selected = selected.filter(val => val !== item); $(this).removeClass('list-group-item-primary'); } else { selected.push(item); $(this).addClass('list-group-item-primary'); } updateSelectedItems(); }); function renderResults(data) { results.empty(); data.forEach(function(item) { const listItem = $('<li class="list-group-item">').text(item); if (selected.includes(item)) { listItem.addClass('list-group-item-primary'); } results.append(listItem); }); } function updateSelectedItems() { selectedItems.empty(); selected.forEach(function(item) { selectedItems.append($('<li class="list-group-item">').text(item)); }); } function getRemoteData(searchTerm) { // 模拟从服务器获取数据 const data = [ '选项1', '选项2', '选项3', '选项4', '选项5', '选项6', ]; // 过滤匹配搜索条件的项 return data.filter(item => item.toLowerCase().includes(searchTerm.toLowerCase())); } }); </script> </body> </html>