diff --git src/bp-groups/bp-groups-functions.php src/bp-groups/bp-groups-functions.php
index a65f82d..ffae266 100644
--- src/bp-groups/bp-groups-functions.php
+++ src/bp-groups/bp-groups-functions.php
@@ -1496,6 +1496,18 @@ function groups_send_membership_request( $requesting_user_id, $group_id ) {
 	$requesting_user->is_confirmed  = 0;
 	$requesting_user->comments      = isset( $_POST['group-request-membership-comments'] ) ? $_POST['group-request-membership-comments'] : '';
 
+	/**
+	 * Fires immediately before the creation of a new membership request.
+	 *
+	 * @since BuddyPress (2.4.0)
+	 *
+ 	 * @param bool  $continue            May the request proceed?
+	 * @param obj   $requesting_user     Requesting_user membership object.
+	 */
+	if ( ! apply_filters( 'groups_membership_request_is_allowed', true, $requesting_user ) ) {
+		return false;
+	}
+
 	if ( $requesting_user->save() ) {
 		$admins = groups_get_group_admins( $group_id );
 
diff --git src/bp-groups/bp-groups-screens.php src/bp-groups/bp-groups-screens.php
index 61a9ed6..83331cc 100644
--- src/bp-groups/bp-groups-screens.php
+++ src/bp-groups/bp-groups-screens.php
@@ -718,8 +718,9 @@ function groups_screen_group_request_membership() {
 			bp_core_add_message( __( 'There was an error sending your group membership request. Please try again.', 'buddypress' ), 'error' );
 		} else {
 			bp_core_add_message( __( 'Your membership request was sent to the group administrator successfully. You will be notified when the group administrator responds to your request.', 'buddypress' ) );
+			// Redirect to group home screen on success.
+			bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) );
 		}
-		bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) );
 	}
 
 	/**
diff --git src/bp-templates/bp-legacy/buddypress/groups/single/request-membership.php src/bp-templates/bp-legacy/buddypress/groups/single/request-membership.php
index de1b1c5..f1a8bad 100644
--- src/bp-templates/bp-legacy/buddypress/groups/single/request-membership.php
+++ src/bp-templates/bp-legacy/buddypress/groups/single/request-membership.php
@@ -12,7 +12,11 @@ do_action( 'bp_before_group_request_membership_content' ); ?>
 
 	<form action="<?php bp_group_form_action('request-membership' ); ?>" method="post" name="request-membership-form" id="request-membership-form" class="standard-form">
 		<label for="group-request-membership-comments"><?php _e( 'Comments (optional)', 'buddypress' ); ?></label>
-		<textarea name="group-request-membership-comments" id="group-request-membership-comments"></textarea>
+		<textarea name="group-request-membership-comments" id="group-request-membership-comments"><?php
+			if ( isset( $_POST[ 'group-request-membership-comments' ] ) ) {
+				echo esc_textarea( $_POST[ 'group-request-membership-comments' ] );
+			}
+		?></textarea>
 
 		<?php
 
