如何让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>
关键修改说明:
- 后端默认值同步:处理
end_date_value时,优先使用start_date的GET参数作为默认值,确保页面加载时两个日期初始值一致。 - 前端实时同步:通过JavaScript监听开始日期的输入事件,用户修改开始日期时立刻同步到结束日期;同时页面加载时执行一次同步,覆盖初始场景。
内容的提问来源于stack exchange,提问作者Borja Perez
相关产品推荐
相关产品推荐

