Show More
Commit Description:
change logger to be limited by file size
Commit Description:
change logger to be limited by file size
References:
File last commit:
Show/Diff file:
Action:
node_modules/jquery/src/attributes/val.js
| 191 lines
| 4.1 KiB
| application/javascript
| JavascriptLexer
|
r789 | define( [ | |||
"../core", | ||||
"../core/stripAndCollapse", | ||||
"./support", | ||||
"../core/nodeName", | ||||
"../var/isFunction", | ||||
"../core/init" | ||||
], function( jQuery, stripAndCollapse, support, nodeName, isFunction ) { | ||||
"use strict"; | ||||
var rreturn = /\r/g; | ||||
jQuery.fn.extend( { | ||||
val: function( value ) { | ||||
var hooks, ret, valueIsFunction, | ||||
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; | ||||
// Handle most common string cases | ||||
if ( typeof ret === "string" ) { | ||||
return ret.replace( rreturn, "" ); | ||||
} | ||||
// Handle cases where value is null/undef or number | ||||
return ret == null ? "" : ret; | ||||
} | ||||
return; | ||||
} | ||||
valueIsFunction = isFunction( value ); | ||||
return this.each( function( i ) { | ||||
var val; | ||||
if ( this.nodeType !== 1 ) { | ||||
return; | ||||
} | ||||
if ( valueIsFunction ) { | ||||
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 ( Array.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: IE <=10 - 11 only | ||||
// option.text throws exceptions (#14686, #14858) | ||||
// Strip and collapse whitespace | ||||
// https://html.spec.whatwg.org/#strip-and-collapse-whitespace | ||||
stripAndCollapse( jQuery.text( elem ) ); | ||||
} | ||||
}, | ||||
select: { | ||||
get: function( elem ) { | ||||
var value, option, i, | ||||
options = elem.options, | ||||
index = elem.selectedIndex, | ||||
one = elem.type === "select-one", | ||||
values = one ? null : [], | ||||
max = one ? index + 1 : options.length; | ||||
if ( index < 0 ) { | ||||
i = max; | ||||
} else { | ||||
i = one ? index : 0; | ||||
} | ||||
// Loop through all the selected options | ||||
for ( ; i < max; i++ ) { | ||||
option = options[ i ]; | ||||
// Support: IE <=9 only | ||||
// IE8-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 | ||||
!option.disabled && | ||||
( !option.parentNode.disabled || | ||||
!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 ]; | ||||
/* eslint-disable no-cond-assign */ | ||||
if ( option.selected = | ||||
jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 | ||||
) { | ||||
optionSet = true; | ||||
} | ||||
/* eslint-enable no-cond-assign */ | ||||
} | ||||
// 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 ( Array.isArray( value ) ) { | ||||
return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); | ||||
} | ||||
} | ||||
}; | ||||
if ( !support.checkOn ) { | ||||
jQuery.valHooks[ this ].get = function( elem ) { | ||||
return elem.getAttribute( "value" ) === null ? "on" : elem.value; | ||||
}; | ||||
} | ||||
} ); | ||||
} ); | ||||