如何实现选择特定日期时按规则修改金额文本框的值?
实现日期选择框联动金额文本框的逻辑
我来帮你调整代码,实现你需要的日期对应金额的规则,这里要注意判断优先级:如果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
相关产品推荐
相关产品推荐

