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

如何实现选择特定日期时按规则修改金额文本框的值?

实现日期选择框联动金额文本框的逻辑

我来帮你调整代码,实现你需要的日期对应金额的规则,这里要注意判断优先级:如果11月2日刚好是周日,我们应该优先显示100rs而不是500,所以要把11月2日的判断放在最前面。

修改后的完整代码

<input type="date" name="mass_date" id="txtDate" required="required" class="col-md-12" 
       min="<?php echo date('Y-m-d', strtotime("+2 days")); ?>" 
       max="<?php echo date("Y-m-d", strtotime("2020-09-30"));?>" 
       value="<?php if(isset($_GET['mass_date'])) { echo $_GET['mass_date']; } ?>" />
<input type="text" class="form-control" id="slDay" name="amount" />

<script type="text/javascript">
$(function() {
    $("#txtDate").change(function() {
        var selDate = new Date(this.value);
        // 注意:Date对象的月份是从0开始计数的,11月对应索引10
        var isNov2nd = selDate.getMonth() === 10 && selDate.getDate() === 2;
        var isSunday = selDate.getDay() === 0;
        
        if (isNov2nd) {
            // 11月2日显示100rs
            $("#slDay").val('100rs');
        } else if (isSunday) {
            // 周日显示500
            $("#slDay").val(500);
        } else {
            // 其他日期显示300
            $("#slDay").val(300);
        }
    });
    
    // 页面加载时如果已有日期值,触发一次change事件初始化金额
    if ($("#txtDate").val()) {
        $("#txtDate").trigger('change');
    }
});
</script>

关键说明

  • 月份索引问题:JavaScript的Date.getMonth()返回0-11的数值,所以11月对应的是10,这个很容易踩坑,要特别注意。
  • 选择器优化:原代码用.form-control选择金额框,建议直接用#slDayID选择,避免页面中有多个.form-control时误修改其他元素。
  • 初始化处理:添加了页面加载时的判断,如果日期框已有默认值(比如从URL参数获取的),会自动触发change事件设置对应的金额,提升用户体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:12:50