Make WordPress Core

Changeset 49717 for branches/5.6


Ignore:
Timestamp:
12/01/2020 07:30:16 AM (6 years ago)
Author:
azaozz
Message:

Quick/Bulk Edit: Fix undefined error when initializing UI Autocomplete 1.12.1 on non-existing element and then attempting to use the autocomplete instance.

Example: jQuery( '#nonexisting' ).autocomplete().autocomplete( 'instance' ).something.

Props _luigi, sabernhardt, donmhico, azaozz.
Reviewed by SergeyBiryukov, azaozz.
Merges [49703] and [49710] to the 5.6 branch.
Fixes #51872.

Location:
branches/5.6
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/5.6

  • branches/5.6/src/js/_enqueues/admin/inline-edit-post.js

    r49213 r49717  
    329329                                textarea = $('textarea.tax_input_' + taxname, editRow),
    330330                                comma = wp.i18n._x( ',', 'tag delimiter' ).trim();
     331
     332                        // Ensure the textarea exists.
     333                        if ( ! textarea.length ) {
     334                                return;
     335                        }
    331336
    332337                        terms.find( 'img' ).replaceWith( function() { return this.alt; } );
  • branches/5.6/src/js/_enqueues/admin/tags-suggest.js

    r48650 r49717  
    3838                var last;
    3939                var $element = $( this );
     40
     41                // Do not initialize if the element doesn't exist.
     42                if ( ! $element.length ) {
     43                        return this;
     44                }
    4045
    4146                options = options || {};
     
    147152                $element.on( 'keydown', function() {
    148153                        $element.removeAttr( 'aria-activedescendant' );
    149                 } )
    150                 .autocomplete( options )
    151                 .autocomplete( 'instance' )._renderItem = function( ul, item ) {
     154                } );
     155
     156                $element.autocomplete( options );
     157
     158                // Ensure the autocomplete instance exists.
     159                if ( ! $element.autocomplete( 'instance' ) ) {
     160                        return this;
     161                }
     162
     163                $element.autocomplete( 'instance' )._renderItem = function( ul, item ) {
    152164                        return $( '<li role="option" id="wp-tags-autocomplete-' + item.id + '">' )
    153165                                .text( item.name )
     
    169181                                $element.autocomplete( 'search' );
    170182                        }
    171                 } )
     183                } );
     184
    172185                // Returns a jQuery object containing the menu element.
    173                 .autocomplete( 'widget' )
     186                $element.autocomplete( 'widget' )
    174187                        .addClass( 'wp-tags-autocomplete' )
    175188                        .attr( 'role', 'listbox' )
Note: See TracChangeset for help on using the changeset viewer.