【问题标题】:Gravity Forms - Compare value against another field重力形式 - 将值与另一个字段进行比较
【发布时间】:2015-09-08 21:02:15
【问题描述】:

希望有人能对此有所了解。我在 Gravity Forms 中设置了一个注册表,用于学生注册。根据法律规定,学生监护人/家长需要同意 18 岁以下的学生。我设置了一个有条件的“监护人/家长”电子邮件字段,仅显示学生是否未满 18 岁。

因此表单中存在 X2 电子邮件字段,一个用于学生,一个用于监护人/父母。提交表格后,激活邮件仅发送到监护人电子邮件地址。

我的问题是,目前同一电子邮件地址可以在监护人/家长和学生电子邮件中噘嘴。我想验证 2 个电子邮件字段并确保它们不相同。

我尝试了以下,但完全没有效果。

add_filter( 'gform_field_validation_12_3', function ( $result, $value, $form, $field ) {
    $master = rgpost( 'input_11' );
    if ( $result['is_valid'] && $value == $master ) {
        $result['is_valid'] = false;
        $result['message']  = 'Please enter a different email.';
    }

    return $result;
}, 10, 4 );

“gform_field_validation_12_3”中的“12”代表我的form_id,“3”代表监护人/父母field_id

“$master = rgpost('input_11');”中的“11”代表我的学生电子邮件 field_id

即使我在两个字段中都有相同的电子邮件,它也不会验证字段并提交表单......

【问题讨论】:

  • 您确定您的 ID 正确吗?我尝试了相同的代码,只更改了表单 ID 和字段 ID,它按预期工作。您也可以尝试简化形式,以确保没有其他干扰。
  • 让它工作,似乎验证不喜欢打开电子邮件验证(电子邮件输入两次)时。有没有办法解决这个问题,仍然有电子邮件验证?

标签: forms validation compare field gravity


【解决方案1】:

如果启用了电子邮件确认,您需要更改此行:

if ( $result['is_valid'] && $value == $master ) {

到这里:

if ( $result['is_valid'] && $value[0] == $master ) {

问题是当启用电子邮件确认时,$value 是一个数组而不是字符串。您可以从数组中获取第一个值,它应该可以按预期工作。

如果您不想因为必须了解所有这些而大惊小怪,请随意使用我刚刚写的这个 sn-p。它还将处理多个字段和多组“唯一”字段。

http://gravitywiz.com/gravity-forms-require-unique-values-for-different-fields/

【讨论】:

    猜你喜欢
    • 2020-11-19
    • 2015-12-21
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多