diff --git src/wp-includes/js/customize-base.js src/wp-includes/js/customize-base.js
index a1528de..7fb23a1 100644
--- src/wp-includes/js/customize-base.js
+++ src/wp-includes/js/customize-base.js
@@ -533,36 +533,30 @@ window.wp = window.wp || {};
 			this.element = api.ensure( element );
 			this.events = '';
 
-			if ( this.element.is('input, select, textarea') ) {
-				this.events += 'change';
+			if ( this.element.is( 'input, select, textarea' ) ) {
+				this.events += 'input';
 				synchronizer = api.Element.synchronizer.val;
 
-				if ( this.element.is('input') ) {
-					type = this.element.prop('type');
-					if ( api.Element.synchronizer[ type ] ) {
-						synchronizer = api.Element.synchronizer[ type ];
+				if ( this.element.is( 'input' ) ) {
+					type = this.element.prop( 'type' );
+					if ( api.Element.synchronizer[type] ) {
+						synchronizer = api.Element.synchronizer[type];
 					}
-					if ( 'text' === type || 'password' === type ) {
-						this.events += ' keyup';
-					} else if ( 'range' === type ) {
-						this.events += ' input propertychange';
-					}
-				} else if ( this.element.is('textarea') ) {
-					this.events += ' keyup';
 				}
 			}
 
 			api.Value.prototype.initialize.call( this, null, $.extend( options || {}, synchronizer ) );
 			this._value = this.get();
 
-			update  = this.update;
+			update = this.update;
 			refresh = this.refresh;
 
-			this.update = function( to ) {
-				if ( to !== refresh.call( self ) )
+			this.update = function ( to ) {
+				if ( to !== refresh.call( self ) ) {
 					update.apply( this, arguments );
+				}
 			};
-			this.refresh = function() {
+			this.refresh = function () {
 				self.set( refresh.call( self ) );
 			};
 
