You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让end_date字段自动同步start_date的选中值?

实现选择开始日期后自动填充结束日期相同值的解决方案

你可以通过添加JavaScript实现这个前端交互效果(PHP作为后端语言无法处理实时前端输入同步),以下是修改后的完整代码,直接替换你原有的代码片段即可:

<?php
$required         = 'false';
$start_date_value = '';

if ( 'yes' == $settings['cwbf_start_date_required'] ) {
    $required = 'true';
}

if ( isset( $_GET['start_date'] ) ) {
    $start_date_value = sanitize_text_field( wp_unslash( $_GET['start_date'] ) );
}
$start_place_holder = __( 'Día de la reserva', 'codup-filters-for-woo-booking' );
?>
<input name="start_date" id="start_date" validate-required="<?php echo wp_kses_post( $required ); ?>" placeholder="<?php echo wp_kses_post( $start_place_holder ); ?>" autocomplete="off" min="<?php echo wp_kses_post( gmdate( 'Y-m-d' ) ); ?>" type="text"  value="<?php echo wp_kses_post( $start_date_value ); ?>" />
</div>
<?php
if ( 'yes' == $settings['cwbf_end_date_enable'] ) {
    ?>
    <div class="filter-row">
        <label class="cwbf-fields-label">
    <?php
    if ( '' != $settings['cwbf_end_date_text'] ) {
        echo wp_kses_post( $settings['cwbf_end_date_text'] );
    } else {
        esc_attr_e( 'End Date', 'codup-filters-for-woo-booking' );
    }
    ?>
        </label>

    <?php
    $required       = 'false';
    $end_date_value = '';

    // 优先同步start_date的GET参数作为end_date默认值
    if ( isset( $_GET['start_date'] ) ) {
        $end_date_value = sanitize_text_field( wp_unslash( $_GET['start_date'] ) );
    } elseif ( isset( $_GET['end_date'] ) ) {
        $end_date_value = sanitize_text_field( wp_unslash( $_GET['end_date'] ) );
    }
    
    $end_place_holder = __( 'Place your End Date here', 'codup-filters-for-woo-booking' );
    ?>
    <input name="end_date" id="end_date" validate-required="<?php echo wp_kses_post( $required ); ?>" placeholder="<?php echo wp_kses_post( $end_place_holder ); ?>" autocomplete="off" min="<?php echo wp_kses_post( gmdate( 'Y-m-d' ) ); ?>" type="text"  value="<?php echo wp_kses_post( $end_date_value ); ?>" />
    </div>
    <?php
}
?>

<!-- 日期同步脚本 -->
<script>
const startDateInput = document.getElementById('start_date');
const endDateInput = document.getElementById('end_date');

// 定义同步函数
function syncEndDate() {
    endDateInput.value = startDateInput.value;
}

// 页面加载时同步初始值
window.addEventListener('load', syncEndDate);

// 监听开始日期输入,实时同步结束日期
startDateInput.addEventListener('input', syncEndDate);
</script>

关键修改说明:

  1. 后端默认值同步:处理end_date_value时,优先使用start_date的GET参数作为默认值,确保页面加载时两个日期初始值一致。
  2. 前端实时同步:通过JavaScript监听开始日期的输入事件,用户修改开始日期时立刻同步到结束日期;同时页面加载时执行一次同步,覆盖初始场景。

内容的提问来源于stack exchange,提问作者Borja Perez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:20:28