2016-07-22 17 views
0

私は、最初の質問でチェックしたボックスに従ってフィールドを表示または非表示にする条件付きフォーム(Wordpressのフォーム7)を持っています。お問い合わせフォーム7条件付き必須チェックボックス

質問が表示されるのはrequiredです(カテゴリは最初の質問で確認されました)。そのために、私はrequiredとして、すべてのチェックボックスを設定し、私がチェックするためにそれを変更する必要があり、この特定の行if ($tag->is_required() && empty($value))ため

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; 
} 

の下に検証コードでマジックを実行する必要があります。

    チェックボックスのメインカテゴリがチェックされているかどうかを
  1. $tag->required()
  2. empty($value)

それ以降は無効になります。

第3ポイントはどのようにコード化できますか?また、各カテゴリについて約5〜10の質問があります。

答えて

0

私は多くの努力

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; 

}

後に答えを見つけました