diff --git src/wp-admin/css/forms.css src/wp-admin/css/forms.css
index 0e499cfc4a..08a1f9a133 100644
|
|
textarea[readonly] { |
237 | 237 | } |
238 | 238 | |
239 | 239 | .form-invalid input, .form-invalid input:focus, |
240 | | .form-invalid select, .form-invalid select:focus { |
| 240 | .form-invalid select, .form-invalid select:focus, input.invalid { |
241 | 241 | border-color: #dc3232 !important; |
242 | | box-shadow: 0 0 2px rgba( 204, 0, 0, 0.8 ); |
| 242 | box-shadow: 0 0 2px rgba( 204, 0, 0, 0.8 ); |
243 | 243 | } |
244 | 244 | |
245 | 245 | .form-table .form-required.form-invalid td:after { |
diff --git src/wp-admin/js/nav-menu.js src/wp-admin/js/nav-menu.js
index 79a8556dbe..b5f6fa5962 100644
|
|
var wpNavMenu; |
829 | 829 | } |
830 | 830 | } |
831 | 831 | }); |
| 832 | |
| 833 | $( '#menu-name' ).on('keyup', _.debounce( function () { |
| 834 | var menuName = $( document.getElementById( 'menu-name' ) ), |
| 835 | menuNameVal = menuName.val(); |
| 836 | |
| 837 | if ( ! menuNameVal || menuNameVal === menuName.attr( 'title' ) || ! menuNameVal.replace( /\s+/, '' ) ) { |
| 838 | // Add warning for invalid menu name |
| 839 | menuName.addClass( 'invalid' ); |
| 840 | } else { |
| 841 | // Remove warning for valid menu name |
| 842 | menuName.removeClass( 'invalid' ); |
| 843 | } |
| 844 | }, 500 )); |
| 845 | |
832 | 846 | $('#add-custom-links input[type="text"]').keypress(function(e){ |
833 | 847 | $('#customlinkdiv').removeClass('form-invalid'); |
834 | 848 | |
… |
… |
var wpNavMenu; |
1172 | 1186 | menuName = $('#menu-name'), |
1173 | 1187 | menuNameVal = menuName.val(); |
1174 | 1188 | // Cancel and warn if invalid menu name |
1175 | | if( !menuNameVal || menuNameVal == menuName.attr('title') || !menuNameVal.replace(/\s+/, '') ) { |
1176 | | menuName.parent().addClass('form-invalid'); |
| 1189 | if( !menuNameVal || menuNameVal === menuName.attr('title') || !menuNameVal.replace(/\s+/, '') ) { |
| 1190 | menuName.addClass('invalid'); |
1177 | 1191 | return false; |
1178 | 1192 | } |
1179 | 1193 | // Copy menu theme locations |
diff --git src/wp-includes/script-loader.php src/wp-includes/script-loader.php
index e5204a7aa0..091ab3db2f 100644
|
|
function wp_default_scripts( &$scripts ) { |
877 | 877 | ) ); |
878 | 878 | |
879 | 879 | // Navigation Menus |
880 | | $scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", array( 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable', 'wp-lists', 'postbox', 'json2' ) ); |
| 880 | /** |
| 881 | * Adding underscore as a dependency to utilize _.debounce |
| 882 | * |
| 883 | * @since 4.9.1 |
| 884 | * |
| 885 | * @see https://core.trac.wordpress.org/attachment/ticket/42321/ |
| 886 | */ |
| 887 | $scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", array( 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable', 'wp-lists', 'postbox', 'json2', 'underscore' ) ); |
881 | 888 | did_action( 'init' ) && $scripts->localize( 'nav-menu', 'navMenuL10n', array( |
882 | 889 | 'noResultsFound' => __( 'No results found.' ), |
883 | 890 | 'warnDeleteMenu' => __( "You are about to permanently delete this menu. \n 'Cancel' to stop, 'OK' to delete." ), |