Index: src/wp-admin/js/dashboard.js
===================================================================
--- src/wp-admin/js/dashboard.js	(revision 40773)
+++ src/wp-admin/js/dashboard.js	(working copy)
@@ -380,7 +380,7 @@
 					template = wp.template( 'community-events-no-upcoming-events' );
 					$results.html( template( templateParams ) );
 				}
-				wp.a11y.speak( communityEventsData.l10n.city_updated.replace( l10nPlaceholder, templateParams.location ) );
+				wp.a11y.speak( communityEventsData.l10n.city_updated.replace( l10nPlaceholder, templateParams.location.description ), 'assertive' );
 
 				elementVisibility['#community-events-location-message'] = true;
 				elementVisibility['.community-events-toggle-location']  = true;
@@ -420,15 +420,15 @@
 
 			$( '.community-events-toggle-location' ).attr( 'aria-expanded', elementVisibility['.community-events-toggle-location'] );
 
-			/*
-			 * During the initial page load, the location form should be hidden
-			 * by default if the user has saved a valid location during a previous
-			 * session. It's safe to assume that they want to continue using that
-			 * location, and displaying the form would unnecessarily clutter the
-			 * widget.
-			 */
-			if ( 'app' === initiatedBy && templateParams.location ) {
+			if ( templateParams.location ) {
+				// Hide the form when there's a valid location.
 				app.toggleLocationForm( 'hide' );
+
+				if ( 'user' === initiatedBy ) {
+					// When the form is programmatically hidden after a user search, bring the focus back to the toggle
+					// button so users relying on screen readers don't lose their place.
+					$( '.community-events-toggle-location' ).focus();
+				}
 			} else {
 				app.toggleLocationForm( 'show' );
 			}
