2016-07-22 13 views
0

我有一個條件表單(在Wordpress上聯繫表單7),它將根據第一個問題上的複選框隱藏或顯示字段。聯繫表7有條件需求複選框

只有顯示的問題是required(即他們的類別在第一個問題中被檢查過)。爲了做到這一點,我需要設置的所有複選框爲required,然後在驗證代碼執行以下

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

的魔術這一行if ($tag->is_required() && empty($value))我需要改變它來檢查:

  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; 

}