【问题标题】:How do I custom validate an input in contact form 7如何自定义验证联系表格 7 中的输入
【发布时间】:2019-06-11 05:36:05
【问题描述】:

我正在使用联系表 7,并为用户创建了一个文本输入以输入日期。我有占位符 mm/dd/yyyy。目前我正在尝试在该输入中验证这种格式。我尝试使用日期标签,但在 safari 上却没有,所以这就是我使用文本标签的原因。

add_filter('wpcf7_validate_text', 'custom_date_validation', 20, 2);
add_filter('wpcf7_validate_text*', 'custom_date_validation', 20, 2);

function custom_text_validation($result, $tag) {
$type = $tag->type; //object instead of array
$name = $tag->name; //object instead of array

if($name == 'last-name') {
    $value = $_POST[$date-signed];
    if(!preg_match("^((0|1)\d{1})/((0|1|2)\d{1})/((19|20)\d{2})", $value )){ //new regex statement
        $result->invalidate($tag, "Invalid Date");
    }
}
return $result;

}

我希望当用户没有输入正确的表单时,联系表单 7 显示无效日期。

【问题讨论】:

  • 请注意,除非您实现一个非常复杂的正则表达式模式来解释每个月的不同天数,否则您最终仍然会允许不可能的日期。

标签: regex wordpress contact-form-7


【解决方案1】:

你可以试试这个正则表达式(它更精确,因为我们在开头和结尾都使用了锚点)并且你在正则表达式中所做的一些错误得到了纠正

^([0]\d|[1][0-2])\/([0-2]\d|[3][0-1])\/([1][9][9]\d|[2]\d{3})$

日期模式:mm/dd/yyyy

此示例中的年份应介于 1990

【讨论】:

  • 方括号中为什么都是单个数字?你可以自己输入数字作为文字。
  • 这如何与联系表格 7 一起使用?我确定正则表达式是正确的,只需要知道函数是否也被更正。
猜你喜欢
  • 2014-05-16
  • 2020-07-18
  • 1970-01-01
  • 2017-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多