2016-07-22 1 views
0

J'ai un formulaire conditionnel (Formulaire de contact 7 sur Wordpress) qui va cacher ou afficher les champs en fonction des cases cochées sur la première question. Seules les questions qui apparaissent sont les suivantes: required (c'est-à-dire que leurs catégories ont été vérifiées dans la première question). Pour ce faire, je dois définir les toutes les cases à cocher required puis effectuez la magie au code de validation ci-dessousformulaire de contact 7 conditionnel requis case à cocher

function wpcf7_checkbox_validation_filter($result, $tag) { 
$tag = new WPCF7_Shortcode($tag); 


$type = $tag->type; 
$name = $tag->name; 

$value = isset($_POST[$name]) ? (array) $_POST[$name] : array(); 

if ($tag->is_required() && empty($value)) { 
    $result->invalidate($tag, wpcf7_get_message('invalid_required')); 
} 

return $result; 
} 

pour cette ligne particulière if ($tag->is_required() && empty($value)) je dois changer pour vérifier:

  1. $tag->required() ET
  2. empty($value) ET
  3. si la catégorie principale de la case a été cochée

Ce n'est qu'alors qu'il sera invalidé.

Comment le 3ème point peut-il être codé? J'ai aussi environ 5-10 questions pour chaque catégorie.

Répondre

0

Je trouve la réponse après beaucoup d'efforts

function example_checkbox_validation_filter($result, $tag) { 
$tag = new WPCF7_Shortcode($tag); 

$arr1 = array('project', 'property', 'budget', 'spaces', 'physical-limitations', 'achieve', 'control', 'lighting', 'climate', 'security'); 
$arr2 = array('pc_room', 'pc_display', 'pc_audio', 'pc_source', 'pc_seat', 'pc_control'); 

$type = $tag->type; 
$name = $tag->name; 

$value = isset($_POST[$name]) ? (array) $_POST[$name] : array(); 

foreach($_POST['choice'] as $selected){ 
    if ($selected == 'Example') { 
     if ($tag->is_required() && empty($value)) { 
      foreach ($arr1 as $array) { 
        if ($name == $array) { 
         $result->invalidate($tag, wpcf7_get_message('invalid_required')); 
       } 
      } 
     } 
    } 
    if ($selected == 'Example 2') { 
     if ($tag->is_required() && empty($value)) { 
      foreach ($arr2 as $array) { 
        if ($name == $array) { 
         $result->invalidate($tag, wpcf7_get_message('invalid_required')); 
       } 
      } 
     } 
    } 
} 
return $result; 

}