我有条件表格(Wordpress上的联系表格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 ) )
我需要更改它以检查:
$tag->required()
和empty( $value )
和只有这样才会失效。
如何编码第3个点?此外,每个类别我都有大约5-10个问题。
答案 0 :(得分: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;
}