Gravity Forms提交表单时将Datepicker日期转为MM/DD/YYYY格式
解决Gravity Forms日期选择器提交格式错误问题
你的问题出在自定义Datepicker只限制了可选日期范围,但没指定输出格式——选择日期后字段显示的是July 27,2022这类长文本格式,而Gravity Forms表单验证要求的是mm/dd/yyyy,所以提交时会报错。下面给你两种解决办法:
方法1:直接让日期选择器输出合规格式
修改你现有的JS代码,加上dateFormat参数指定格式:
$('#input_14_11').datepicker({ minDate: '+1d', dateFormat: 'mm/dd/yy' // yy会自动转为四位年份,最终输出mm/dd/yyyy });
这样用户选完日期后,字段里直接显示07/27/2022格式,表单验证就能正常通过。
方法2:保留友好显示格式,提交时自动转换
如果想让用户看到的是July 27,2022这类易读格式,但提交时用合规格式,可以这么做:
- 在Gravity Forms编辑器里给原日期字段新增一个隐藏字段(记好它的ID,比如
input_14_12) - 修改JS代码,用
altField和altFormat把格式化后的日期同步到隐藏字段:
$('#input_14_11').datepicker({ minDate: '+1d', dateFormat: 'MM dd, yy', // 用户看到的友好格式 altField: '#input_14_12', // 绑定隐藏字段 altFormat: 'mm/dd/yy' // 隐藏字段用合规格式,供表单提交验证 });
- 回到表单设置,把原日期字段设为“不验证、不保存”,转而验证和保存这个隐藏字段的值。
或者也可以直接监听表单提交事件,临时转换原字段的值:
// 监听表单提交动作 $('#gform_14').submit(function() { var dateField = $('#input_14_11'); // 获取选中的日期对象 var selectedDate = dateField.datepicker('getDate'); if (selectedDate) { // 格式化为mm/dd/yyyy var formattedDate = $.datepicker.formatDate('mm/dd/yy', selectedDate); // 更新字段值 dateField.val(formattedDate); } });
把这段代码和你原来的Datepicker配置放在一起,提交时会自动把字段值转换成合规格式。
内容的提问来源于stack exchange,提问作者user18090927
相关产品推荐
相关产品推荐

