PHP站点中如何根据当前页面预选Bootstrap下拉菜单选项?
解决方案
步骤1:获取并验证当前页面参数
先从URL中提取page参数,结合你已有的$pagesOk数组做合法性校验,避免非法参数注入:
// 获取当前page参数,默认设为一个通用值(比如home) $currentPage = isset($_GET['page']) ? strtolower($_GET['page']) : 'home'; // 验证参数是否在合法列表内,不合法则重置为默认值 if (!in_array($currentPage, $pagesOk)) { $currentPage = 'home'; }
步骤2:给Bootstrap下拉菜单设置默认选中项
将下拉菜单的选项值与$currentPage关联,匹配的选项自动添加selected属性。示例结构如下:
<select class="form-control search-category" id="searchCategory"> <option value="cars" <?php echo ($currentPage === 'cars') ? 'selected' : ''; ?>>Cars</option> <option value="boats" <?php echo ($currentPage === 'boats') ? 'selected' : ''; ?>>Boats</option> <option value="trucks" <?php echo ($currentPage === 'trucks') ? 'selected' : ''; ?>>Trucks</option> <!-- 其他分类选项 --> </select>
页面加载时,PHP会自动给匹配当前页面的选项加上选中标记,实现默认选中对应分类的效果。
步骤3:关联jQuery Autocomplete的默认分类逻辑
如果需要让搜索框默认使用当前选中的分类做检索,把下拉菜单的选中值同步到autocomplete的请求中:
$(document).ready(function() { // 获取页面加载时默认选中的分类值 var defaultCategory = $('#searchCategory').val(); // 初始化autocomplete $('#searchInput').autocomplete({ source: function(request, response) { $.ajax({ url: 'search.php', data: { term: request.term, category: $('#searchCategory').val() // 实时获取当前选中的分类 }, success: function(data) { response(data); } }); }, // 其他autocomplete配置项 }); });
动态生成下拉菜单的适配方案
如果你的分类是从数据库动态获取的,可通过循环输出选项时添加选中判断:
<?php foreach ($categoryList as $slug => $categoryName): ?> <option value="<?php echo $slug; ?>" <?php echo ($currentPage === $slug) ? 'selected' : ''; ?>> <?php echo $categoryName; ?> </option> <?php endforeach; ?>
内容的提问来源于stack exchange,提问作者Jibeji
相关产品推荐
相关产品推荐

