Customize: Strip zero padding when setting month to prevent de-selection; add zero-padding for `number` input fields when blurring.

Amends [42042].
See #42373.
Fixes #42392.


git-svn-id: https://develop.svn.wordpress.org/trunk@42104 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Weston Ruter 2017-11-01 21:03:36 +00:00
parent a39d599adf
commit 7b33220fa3
1 changed files with 28 additions and 2 deletions

View File

@ -5577,6 +5577,13 @@
control.notifications.remove( 'invalid_date' );
}
} ) );
// Add zero-padding when blurring field.
input.on( 'blur', _.debounce( function() {
if ( ! control.invalidDate ) {
control.populateDateInputs();
}
} ) );
} );
control.inputElements.month.bind( control.updateDaysForMonth );
@ -5822,8 +5829,27 @@
}
_.each( control.inputElements, function( element, component ) {
if ( 'meridian' === component || parseInt( parsed[ component ], 10 ) !== parseInt( element(), 10 ) ) {
element.set( parsed[ component ] );
var value = parsed[ component ]; // This will be zero-padded string.
// Set month and meridian regardless of focused state since they are dropdowns.
if ( 'month' === component || 'meridian' === component ) {
// Options in dropdowns are not zero-padded.
value = value.replace( /^0/, '' );
element.set( value );
} else {
value = parseInt( value, 10 );
if ( ! element.element.is( document.activeElement ) ) {
// Populate element with zero-padded value if not focused.
element.set( parsed[ component ] );
} else if ( value !== parseInt( element(), 10 ) ) {
// Forcibly update the value if its underlying value changed, regardless of zero-padding.
element.set( String( value ) );
}
}
} );