繁体   English   中英

无法提交包含隐藏必填字段重力的表单 Forms

[英]Can’t submit form with hidden required field Gravity Forms

我已经使用 jQuery 设置了一个隐藏的必填字段。每当用户尝试提交表单时,它都会给出一个错误,提示“您的提交有问题。请查看下面的字段。” 但是当我查看这些字段时,没有显示任何错误。 我正在使用隐藏的必填字段作为条件语句,如果衬衫的数量不等于参与者的数量,则显示隐藏的必填字段,如果它们相等,则隐藏必填字段,这将允许用户继续提交成型成功。

 $('#input_1_36_1,#input_1_18').change(function() { var participants = $('#input_1_36_1'); var shirts = $('#input_1_18'); var error = $('#field_1_45'); if (Number(participants.val()) === Number(shirts.val())) { error.hide(); //$('#field_1_48').hide(); //fake shirts $('#field_1_18').show(); //shirts $('#field_1_48').prop("class", "gf_invisible"); } else { error.show(); error.css('color', 'red'); $('#field_1_48').show(); //fake shirts $('#field_1_18').hide(); //shirts // $('#input_1_48').prop("class", "gf_hidden"); //$('#input_1_48').prop("readonly", true); // $('#field_1_48').prop("class","gf_invisible"); } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> html here!

使用 JS 隐藏字段不会更改其必填状态。 您需要在 PHP 中进行自定义验证。像这样:

// Ignore value of field 48 and set it valid if values of fields 36.1 and 18 are equal.
add_filter( 'gform_field_validation_1_48', function ( $result, $value, $form, $field ) {
    $participants = rgpost( 'input_36.1' );
    $shirts = rgpost( 'input_18' );
    if ( $participants === $shirts ) {
        $result['is_valid'] = true;
        $result['message']  = '';
    }

    return $result;
}, 10, 4 );

另一个更简洁的选择是使用gform_pre_validation

add_filter( 'gform_pre_validation', 'my_conditional_requirement' );
function my_conditional_requirement( $form ) {
    $participants = rgpost( 'input_36.1' );
    $shirts = rgpost( 'input_18' );
    if ( $participants !== $shirts ) {
        return $form;
    }

    foreach ( $form['fields'] as &$field ) {
        if ( $field->id == 48 ) {
            $field->isRequired = false;
        }
    }
    return $form;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM