点击按钮时将当前日期填入date类型输入框的jQuery/PHP实现咨询
问题修复方案
原代码存在的问题
- jQuery选择器写法错误:选中id属性的元素需要加
#前缀,原代码的$('subdateout')无法匹配到目标输入框 - 赋值格式不符合规范:
type="date"的原生输入框要求value必须为YYYY-MM-DD格式的字符串,你使用的time.toDateString()返回的格式不符合要求,会导致赋值失败。另外该输入框的显示格式由浏览器/系统的区域设置自动决定,无需手动转为mm/dd/yyyy格式再赋值,只要本地区域设置为美区,就会自动显示为月/日/年的格式。
修复后代码(使用原生date输入框)
$(function() { $('#btncheckout').click(function() { const time = new Date(); // 补零函数,处理月、日不足两位的情况,兼容低版本浏览器可以替换为:const padZero = num => num < 10 ? '0' + num : num; const padZero = num => num.toString().padStart(2, '0'); const year = time.getFullYear(); const month = padZero(time.getMonth() + 1); // 月份从0开始计数,需要+1 const day = padZero(time.getDate()); // 组装为date输入框要求的YYYY-MM-DD格式 $('#subdateout').val(`${year}-${month}-${day}`); }); });
如需固定显示mm/dd/yyyy格式(不受系统区域影响)
可以把input的type改为text,再直接赋值格式化后的字符串:
- 修改HTML部分的input标签:
<input type="text" name="subdateout" id="subdateout" class="form-control rounded-0 w3-tiny" value="" placeholder="mm/dd/yyyy">
- 对应修改jQuery赋值逻辑:
$(function() { $('#btncheckout').click(function() { const time = new Date(); const padZero = num => num < 10 ? '0' + num : num; const month = padZero(time.getMonth() + 1); const day = padZero(time.getDate()); const year = time.getFullYear(); // 直接组装为mm/dd/yyyy格式赋值 $('#subdateout').val(`${month}/${day}/${year}`); }); });
内容的提问来源于stack exchange,提问作者king kong
相关产品推荐
相关产品推荐

