Как сделать так, чтобы поле имени гравитационных форм принимало только буквы

#php #wordpress #gravity-forms-plugin

#php #wordpress #gravity-forms-plugin

Вопрос:

Как мне заставить поле имени формы gravity принимать только буквы, цифры должны выдавать ошибку.

Комментарии:

1. Итак, вы не хотите никаких цифр в поле имени и хотите показать сообщение об ошибке, если есть цифры?

2. Да, это правильно. Поле имени должно принимать только буквы. Например, «test123» выдаст сообщение об ошибке «это поле должно содержать только буквы» (или что-то в этом роде).

3. Только по имени и фамилии ?

4. Я просто использую одно поле ввода текста для имени, поэтому, по сути, пользователь может ввести полное имя, если пожелает, но если где-нибудь есть буква, это выдаст ошибку

5. Это означает, что вы не используете фактическое поле имени, которое можно найти в расширенных полях. Используете ли вы однострочный текст из gravity forms?

Ответ №1:

Вам нужно использовать фильтр проверки gform_field_validation, чтобы иметь возможность выполнять такие действия validation перед отправкой формы.

Кроме того, нам нужно использовать функцию preg_match PHP с regex , чтобы убедиться, что мы берем только буквы из значения ввода полного имени.

Просто добавьте этот код в свою активную тему functions.php файл: (Код протестирован и работает)

 add_filter( 'gform_field_validation', function ( $result, $value, $form, $field ) {
    if ( $field->type == 'name' ) {

        // Input values
        $fullName = rgar( $value, $field->id . '.3' );
         
        if ( empty( $fullName )) {
            $result['is_valid'] = false;
            $result['message']  = empty( $field->errorMessage ) ? __( 'This field is required. Please enter a complete name.', 'gravityforms' ) : $field->errorMessage;
        } else if (preg_match('/[A-Za-z].*[0-9]|[0-9].*[A-Za-z]/', $fullName)) { //check for letters only
            $result['is_valid'] = false;
            $result['message']  = empty( $field->errorMessage ) ? __( 'Full name must ony contains letters.', 'gravityforms' ) : $field->errorMessage;
        } else {
            $result['is_valid'] = true;
            $result['message']  = '';
        }
    }
    return $result; //return results
}, 10, 4 );