[英]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.