diff options
| author | Jonathan Barronville | 2014-06-07 19:13:28 -0400 | 
|---|---|---|
| committer | Jonathan Barronville | 2014-06-07 19:13:28 -0400 | 
| commit | b56e5c671ce89f1c8ddc67a4ac8d2f59de04ea85 (patch) | |
| tree | 80ce4d67ff46505dc1ec77b72daf7bed59abf8b4 /bower_components/jquery/src/attributes/val.js | |
| parent | 67ad58c27c4a2704532246d044e1ecbae2a11022 (diff) | |
| download | sellevate-b56e5c671ce89f1c8ddc67a4ac8d2f59de04ea85.tar.bz2 | |
Yo.
Diffstat (limited to 'bower_components/jquery/src/attributes/val.js')
| -rw-r--r-- | bower_components/jquery/src/attributes/val.js | 163 | 
1 files changed, 163 insertions, 0 deletions
| diff --git a/bower_components/jquery/src/attributes/val.js b/bower_components/jquery/src/attributes/val.js new file mode 100644 index 0000000..42ef323 --- /dev/null +++ b/bower_components/jquery/src/attributes/val.js @@ -0,0 +1,163 @@ +define([ +	"../core", +	"./support", +	"../core/init" +], function( jQuery, support ) { + +var rreturn = /\r/g; + +jQuery.fn.extend({ +	val: function( value ) { +		var hooks, ret, isFunction, +			elem = this[0]; + +		if ( !arguments.length ) { +			if ( elem ) { +				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + +				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { +					return ret; +				} + +				ret = elem.value; + +				return typeof ret === "string" ? +					// handle most common string cases +					ret.replace(rreturn, "") : +					// handle cases where value is null/undef or number +					ret == null ? "" : ret; +			} + +			return; +		} + +		isFunction = jQuery.isFunction( value ); + +		return this.each(function( i ) { +			var val; + +			if ( this.nodeType !== 1 ) { +				return; +			} + +			if ( isFunction ) { +				val = value.call( this, i, jQuery( this ).val() ); +			} else { +				val = value; +			} + +			// Treat null/undefined as ""; convert numbers to string +			if ( val == null ) { +				val = ""; + +			} else if ( typeof val === "number" ) { +				val += ""; + +			} else if ( jQuery.isArray( val ) ) { +				val = jQuery.map( val, function( value ) { +					return value == null ? "" : value + ""; +				}); +			} + +			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + +			// If set returns undefined, fall back to normal setting +			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { +				this.value = val; +			} +		}); +	} +}); + +jQuery.extend({ +	valHooks: { +		option: { +			get: function( elem ) { +				var val = jQuery.find.attr( elem, "value" ); +				return val != null ? +					val : +					// Support: IE10-11+ +					// option.text throws exceptions (#14686, #14858) +					jQuery.trim( jQuery.text( elem ) ); +			} +		}, +		select: { +			get: function( elem ) { +				var value, option, +					options = elem.options, +					index = elem.selectedIndex, +					one = elem.type === "select-one" || index < 0, +					values = one ? null : [], +					max = one ? index + 1 : options.length, +					i = index < 0 ? +						max : +						one ? index : 0; + +				// Loop through all the selected options +				for ( ; i < max; i++ ) { +					option = options[ i ]; + +					// IE6-9 doesn't update selected after form reset (#2551) +					if ( ( option.selected || i === index ) && +							// Don't return options that are disabled or in a disabled optgroup +							( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) && +							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + +						// Get the specific value for the option +						value = jQuery( option ).val(); + +						// We don't need an array for one selects +						if ( one ) { +							return value; +						} + +						// Multi-Selects return an array +						values.push( value ); +					} +				} + +				return values; +			}, + +			set: function( elem, value ) { +				var optionSet, option, +					options = elem.options, +					values = jQuery.makeArray( value ), +					i = options.length; + +				while ( i-- ) { +					option = options[ i ]; +					if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) { +						optionSet = true; +					} +				} + +				// force browsers to behave consistently when non-matching value is set +				if ( !optionSet ) { +					elem.selectedIndex = -1; +				} +				return values; +			} +		} +	} +}); + +// Radios and checkboxes getter/setter +jQuery.each([ "radio", "checkbox" ], function() { +	jQuery.valHooks[ this ] = { +		set: function( elem, value ) { +			if ( jQuery.isArray( value ) ) { +				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); +			} +		} +	}; +	if ( !support.checkOn ) { +		jQuery.valHooks[ this ].get = function( elem ) { +			// Support: Webkit +			// "" is returned instead of "on" if a value isn't specified +			return elem.getAttribute("value") === null ? "on" : elem.value; +		}; +	} +}); + +}); | 
