自定义验证联系表 7

Posted

技术标签:

【中文标题】自定义验证联系表 7【英文标题】:Custom validation contact form7 【发布时间】:2020-07-18 11:26:21 【问题描述】:

我需要验证表单 - 如果有人输入电话号码/电子邮件,则不再需要电子邮件/电话号码。我试过了

(function($) 
    $(document).ready(function()
        $(".wpcf7-email").on('change', function postinput()
            var id = $(this).val();
            if(id) 
                   document.getElementById('phone').setAttribute("aria-required", "false");
                   $( "#phone" ).removeClass( "wpcf7-validates-as-required" )
            else 
                   document.getElementById('phone').setAttribute("aria-required", "true");
           
        );
    ); 
)(jQuery);

并尝试了 php

    add_filter( 'wpcf7_validate_text', 'xyz_validation', 20, 2 );

    function xyz_validation( $result, $tag ) 

        $email = isset( $_POST['email'] ) ? trim( $_POST['email'] ) : '';
        $phone = isset( $_POST['phone'] ) ? trim( $_POST['phone'] ) : '';

        if ( !empty($email) && !empty($subject) ) 
          $result->invalidate( $tag, "Really?" );
        

我的联系表格(jquery - 不需要 PHP 表格(无符号 '*')

[email* email id:email]
[number* phone id:phone]

【问题讨论】:

您还没有概述实际问题是什么。 我的代码(jquery 和 php)不能正常工作。我只需要一个信息——电话或电子邮件,例如当有人输入电子邮件时,他不必输入电话号码。联系form7 5.1.6版 【参考方案1】:

在不使用 javascript 的情况下实现此目的的一种方法是使用 Smart Grid-layout extension for CF7,它旨在弥补 CF7 插件的许多缺点。它引入了一个自定义验证钩子 这允许根据整个提交的数据集验证提交,

add_filter( 'cf7sg_validate_submission','validate_field_submission',10,3);
function validate_field_submission($validation_errors, $submission, $cf7_key)
  if('my-contact-form'==$cf7_key ) //check this is the right form.
    //$validation_errors is an array of field-names=>error messages.
    //these include the simple validation exposed in the CF7 plugin for required fields/special field formats.
    if(!empty($submission['phone']) && wpcf7_get_message( 'invalid_required' ) == $validation_errors['email'])
      //reset the error message.
      $validation_errors['email'] = '';
    
    if(!empty($submission['email']) && wpcf7_get_message( 'invalid_required' ) == $validation_errors['phone'])
      //reset the error message.
      $validation_errors['phone'] = '';
    
  return $validation_errors;
      

【讨论】:

以上是关于自定义验证联系表 7的主要内容,如果未能解决你的问题,请参考以下文章

javascript 联系表单7自定义DOM事件

php 自定义联系表格7标签

表单验证自定义二选一

我可以通过 Laravel 5.1 中的自定义请求对象验证后恢复输入字段值吗?

coredata 通过检测版本自定义迁移

mongoose 5.7.0 中的自定义验证