@moomfe/zenjs
Version:
ZenJS 是一个高性能的 JavaScript 工具库。
69 lines (57 loc) • 1.67 kB
JavaScript
import rnothtmlwhite from "../../../../shared/const/rnothtmlwhite";
import $toArray from "../../../../1. Core/1. Array/$toArray/index";
const valHooks = {
option: {
get( elem ){
const value = elem.getAttribute( 'value' );
if( value == null ){
return ( elem.textContent.match( rnothtmlwhite ) || [] ).join(' ');
}
return value;
}
},
select: {
get( elem ){
const options = elem.options;
const index = elem.selectedIndex;
const one = elem.type === 'select-one';
const max = one ? index + 1 : options.length;
let values = one ? null : [];
let value, option, i;
for( i = index < 0 ? max : one ? index : 0; i < max; i++ ){
option = options[ i ];
if(
( option.selected || i === index )
&& !option.disabled
&& (
!option.parentNode.disabled
|| option.parentNode._nodeName !== 'optgroup'
)
){
value = valHooks.option.get( option );
if( one ){
return value;
}
values.push( value );
}
}
return values;
},
set( elem, value ){
const options = elem.options;
const values = $toArray( value );
let i = options.length;
let optionSet, option;
while( i-- ){
option = options[ i ];
if( option.selected = values.$inArray( valHooks.option.get( option ) ) ){
optionSet = true;
}
}
if( !optionSet ){
elem.selectedIndex = -1;
}
}
}
};
export default valHooks;