Index: src/js/_enqueues/admin/tags.js
===================================================================
--- src/js/_enqueues/admin/tags.js	(revision 53077)
+++ src/js/_enqueues/admin/tags.js	(working copy)
@@ -101,9 +101,6 @@
 	$('#submit').on( 'click', function(){
 		var form = $(this).parents('form');
 
-		if ( ! validateForm( form ) )
-			return false;
-
 		if ( addingTerm ) {
 			// If we're adding a term, noop the button to avoid duplicate requests.
 			return false;
@@ -127,8 +124,14 @@
 
 			$('#ajax-response').empty();
 			res = wpAjax.parseAjaxResponse( r, 'ajax-response' );
-			if ( ! res || res.errors )
+
+			if ( res.errors && res.responses[0].errors[0].code === 'empty_term_name' ) {
+				validateForm( form );
+			}
+
+			if ( ! res || res.errors ) {
 				return;
+			}
 
 			parent = form.find( 'select#parent' ).val();
 
Index: src/js/_enqueues/lib/ajax-response.js
===================================================================
--- src/js/_enqueues/lib/ajax-response.js	(revision 53077)
+++ src/js/_enqueues/lib/ajax-response.js	(working copy)
@@ -50,19 +50,28 @@
 				parsed.responses.push( response );
 			} );
 			if ( err.length ) {
-				re.html( '<div class="error">' + err + '</div>' );
+				re.html( '<div class="notice notice-error">' + err + '</div>' );
 				wp.a11y.speak( err );
 			} else if ( successmsg.length ) {
-				re.html( '<div class="updated notice is-dismissible"><p>' + successmsg + '</p></div>');
+				re.html( '<div class="notice notice-success is-dismissible"><p>' + successmsg + '</p></div>');
 				jQuery(document).trigger( 'wp-updates-notice-added' );
 				wp.a11y.speak( successmsg );
 			}
 			return parsed;
 		}
-		if ( isNaN(x) ) { return !re.html('<div class="error"><p>' + x + '</p></div>'); }
-		x = parseInt(x,10);
-		if ( -1 === x ) { return !re.html('<div class="error"><p>' + wpAjax.noPerm + '</p></div>'); }
-		else if ( 0 === x ) { return !re.html('<div class="error"><p>' + wpAjax.broken  + '</p></div>'); }
+		if ( isNaN( x ) ) {
+			wp.a11y.speak( x );
+			return ! re.html( '<div class="notice notice-error"><p>' + x + '</p></div>' );
+		}
+		x = parseInt( x, 10 );
+		if ( -1 === x ) {
+			wp.a11y.speak( wpAjax.noPerm );
+			return ! re.html( '<div class="notice notice-error"><p>' + wpAjax.noPerm + '</p></div>' );
+		}
+		else if ( 0 === x ) {
+			wp.a11y.speak( wpAjax.broken );
+			return ! re.html( '<div class="notice notice-error"><p>' + wpAjax.broken  + '</p></div>' );
+		}
 		return true;
 	},
 	invalidateForm: function ( selector ) {
Index: src/wp-admin/css/forms.css
===================================================================
--- src/wp-admin/css/forms.css	(revision 53077)
+++ src/wp-admin/css/forms.css	(working copy)
@@ -245,7 +245,7 @@
 .form-invalid.form-required select,
 .form-invalid.form-required select:focus {
 	border-color: #d63638 !important;
-	box-shadow: 0 0 2px rgba(214, 54, 56, 0.8);
+	box-shadow: 0 0 0 1px #d63638;
 }
 
 .form-table .form-required.form-invalid td:after {
Index: src/wp-admin/includes/ajax-actions.php
===================================================================
--- src/wp-admin/includes/ajax-actions.php	(revision 53077)
+++ src/wp-admin/includes/ajax-actions.php	(working copy)
@@ -1071,16 +1071,21 @@
 	}
 
 	if ( ! $tag || is_wp_error( $tag ) ) {
-		$message = __( 'An error has occurred. Please reload the page and try again.' );
+		$message    = __( 'An error has occurred. Please reload the page and try again.' );
+		$error_code = 'error';
 
 		if ( is_wp_error( $tag ) && $tag->get_error_message() ) {
 			$message = $tag->get_error_message();
 		}
 
+		if ( is_wp_error( $tag ) && $tag->get_error_code() ) {
+			$error_code = $tag->get_error_code();
+		}
+
 		$x->add(
 			array(
 				'what' => 'taxonomy',
-				'data' => new WP_Error( 'error', $message ),
+				'data' => new WP_Error( $error_code, $message ),
 			)
 		);
 		$x->send();
Index: src/wp-includes/script-loader.php
===================================================================
--- src/wp-includes/script-loader.php	(revision 53077)
+++ src/wp-includes/script-loader.php	(working copy)
@@ -694,7 +694,7 @@
 
 	$scripts->add( 'clipboard', "/wp-includes/js/clipboard$suffix.js", array(), false, 1 );
 
-	$scripts->add( 'wp-ajax-response', "/wp-includes/js/wp-ajax-response$suffix.js", array( 'jquery' ), false, 1 );
+	$scripts->add( 'wp-ajax-response', "/wp-includes/js/wp-ajax-response$suffix.js", array( 'jquery', 'wp-a11y' ), false, 1 );
 	did_action( 'init' ) && $scripts->localize(
 		'wp-ajax-response',
 		'wpAjax',
