Make WordPress Core

Opened 7 years ago

Last modified 7 years ago

#31885 closed defect (bug)

Widgets in Customizer fail to sync options in select[multiple] — at Version 1

Reported by: westonruter Owned by:
Milestone: 4.2 Priority: normal
Severity: normal Version: 3.9
Component: Customize Keywords: has-patch
Focuses: javascript Cc:

Description (last modified by westonruter)

When a widget is updated in the Customizer, the form values are serialized and sent via Ajax to pass through the widget's update callback. The widget form with the sanitized values is then sent in the Ajax response. The form inputs in the Ajax response are then copied over from the response into the existing form. This sync logic, however, does not account for the special case of select[multiple] inputs which lack a single value to synchronize: the value to synchronize is an array of zero or more values.

The issue with synchronizing the selected state among a select[multiple] option elements is particularly evident when the widget's underlying setting is changed programmatically, as opposed to direct user input. Here is a demonstration of the issue by using a widget undo/redo feature: https://cloudup.com/i7oo4v3X0v6

Plugin used in demo is attached to ticket.

Big props to davidlonjon for discovering this issue and suggesting a fix.

Change History (3)

#1 @westonruter
7 years ago

  • Description modified (diff)

7 years ago

Demo plugin: Test select[multiple] sync behavior in Widget Customizer https://gist.github.com/westonruter/2e56e08881ae296237ca

Note: See TracTickets for help on using tickets.