PHP修改日期选择器默认选项:替换日期范围为自定义文本
旅游日期选择器默认选项修改方案
以下针对你提出的两种需求,给出具体代码修改方法:
一、替换为“选择您的日期”提示文本
直接修改下拉框的默认选项,将原有的getDateRange()替换为提示文本,并添加属性确保默认显示且不可误选:
if(count($dates)>1): // 替换默认提示文本,添加disabled和selected属性 $listing = '<select class="select-css sacred_datepicker"><option value="0" disabled selected>选择您的日期</option>'. implode(' ',$dates). '</select>'; echo sprintf($defaultFormat, 'dates', 'Dates:', $listing); else: echo sprintf($defaultFormat, 'dates', 'Dates:', implode(' ',$dates_single)); echo "<input class='sacred_date_single' value='".implode(' ',$dates_single)."' type='hidden'>"; endif;
说明:disabled属性防止用户选中提示选项,selected确保页面加载时默认显示该提示。
二、默认选中首个可用日期
修改日期选项生成逻辑,给首个可预订日期添加selected属性,同时移除原提示选项:
if (have_rows('available_tour_dates')) : $dates = array(); $index = 1; while (have_rows('available_tour_dates')) : the_row(); $dates_single[] = getPrettyDate(get_sub_field('start_date')).' – '.getPrettyDate(get_sub_field('end_date')); $c = (get_sub_field('bookable'))? '' : ' disabled'; // 给首个可预订日期添加selected属性 if($index === 1 && empty($c)){ $c .= ' selected'; } $dates[] = sprintf($optionFormat, $index, $c, getPrettyDate(get_sub_field('start_date')).' – '.getPrettyDate(get_sub_field('end_date'))); $index++; endwhile; if(count($dates)>1): // 移除原提示选项,直接渲染日期列表 $listing = '<select class="select-css sacred_datepicker">'. implode(' ',$dates). '</select>'; echo sprintf($defaultFormat, 'dates', 'Dates:', $listing); else: echo sprintf($defaultFormat, 'dates', 'Dates:', implode(' ',$dates_single)); echo "<input class='sacred_date_single' value='".implode(' ',$dates_single)."' type='hidden'>"; endif; ?>
说明:
- 仅给可预订的首个日期添加选中状态,避免默认选中不可预订的日期
- 需确保
$optionFormat的格式为类似<option value="%d" %s>%s</option>,保证属性能正确插入
内容的提问来源于stack exchange,提问作者Renee
相关产品推荐
相关产品推荐

