【问题标题】:Custom Validation on Text Field Contact Form 7文本字段联系表 7 上的自定义验证
【发布时间】:2019-03-28 19:21:01
【问题描述】:

我正在尝试验证仅接受有效日期的文本字段,例如21-03-1980 但是验证码没有被触发,但我看不出有什么问题。

这是我正在使用的代码:

function custom_dob_validation_filter($result,$tag){

    $name = $tag->name;

    if($name == 'datemdy'){

        $datemdy = $_POST['datemdy'];

        if($datemdy != '') {

            if(!preg_match('/^([0-9]{1,2})\\/([0-9]{1,2})\\/([0-9]{4})$/', $datemdy)) {

                $result->invalidate( $tag, "Please Enter a Valid Date of Birth" );

            }

        }

    }

    return $result;
}   

add_filter( 'wpcf7_validate_dob*', 'custom_dob_validation_filter', 10, 2 );
add_filter( 'wpcf7_validate_dob', 'custom_dob_validation_filter', 10, 2 );

任何帮助将不胜感激。

TIA

【问题讨论】:

  • 您可以考虑使用DateTime 而不是正则表达式来验证日期。这部分在你的正则表达式 \\/ 应该是 - 就像 ^([0-9]{1,2})-([0-9]{1,2})-([0-9]{4})$
  • 可能$datemdy的开头/结尾有一些空格?
  • 'add_filter' 行是故意的还是错误的?
  • 这是为了包括对输入的正常和必需版本的验证

标签: php regex wordpress contact-form-7


【解决方案1】:

经过几个小时的搜索,我找到了问题。

add_filter( 'wpcf7_validate_dob*', 'custom_dob_validation_filter', 10, 2 );
add_filter( 'wpcf7_validate_dob', 'custom_dob_validation_filter', 10, 2 );

应替换为:

add_filter( 'wpcf7_validate_text*', 'custom_dob_validation_filter', 10, 2 );
add_filter( 'wpcf7_validate_text', 'custom_dob_validation_filter', 10, 2 );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-18
    • 2014-05-16
    • 2021-10-02
    • 2019-08-30
    • 1970-01-01
    • 2017-08-15
    • 2019-02-02
    • 2014-01-22
    相关资源
    最近更新 更多