Ultimate Member插件生日字段无法在HTML date类型表单自动加载问题求解
问题原因
HTML 原生 type="date" 输入框的 value 属性仅识别 YYYY-MM-DD 格式的日期字符串,你从 Ultimate Member 取到的生日是 d/m/Y 格式,两者格式不匹配所以无法自动填充。
方案1:继续使用原生date输入框(PHP格式转换)
用PHP将读取到的生日格式转为 YYYY-MM-DD 即可正常填充,代码示例如下:
<?php // 先读取UM存储的生日 $um_birthday = um_user('birthday'); $input_date = ''; if (!empty($um_birthday)) { // 按d/m/Y格式解析日期 $date_obj = DateTime::createFromFormat('d/m/Y', $um_birthday); // 解析成功才转格式,避免异常 if ($date_obj) { $input_date = $date_obj->format('Y-m-d'); } } ?>
替换原表单代码中的value部分即可:
<label for="birthday">Birthday:</label> <input type="date" id="birthday" value="<?php echo $input_date;?>" name="birthday" required>
该方案优势:保留原生日期选择器的交互能力,无需用户手动输入;注意:输入框的显示格式由用户浏览器/系统的区域设置决定,无法自定义统一显示格式。
方案2:固定显示d/m/Y格式(纯HTML方案)
如果你需要统一给用户显示 d/m/Y 格式的日期,可放弃 type="date",改用文本输入框加正则校验,无需修改PHP逻辑,直接用原代码即可:
<label for="birthday">Birthday:</label> <input type="text" id="birthday" value="<?php echo um_user('birthday');?>" name="birthday" required pattern="\d{2}/\d{2}/\d{4}" placeholder="请输入dd/mm/yyyy格式的日期">
该方案优势:完全控制显示格式,无需做日期格式转换;注意:没有原生日期选择器,需要用户手动输入,正则会自动校验输入格式是否符合要求。
内容的提问来源于stack exchange,提问作者Scissors38th
相关产品推荐
相关产品推荐

