File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -499,6 +499,15 @@ forEach({
499499
500500 val : function ( element , value ) {
501501 if ( isUndefined ( value ) ) {
502+ if ( nodeName_ ( element ) === 'SELECT' && element . multiple ) {
503+ var result = [ ] ;
504+ forEach ( element . options , function ( option ) {
505+ if ( option . selected ) {
506+ result . push ( option . value || option . text ) ;
507+ }
508+ } ) ;
509+ return result . length === 0 ? null : result ;
510+ }
502511 return element . value ;
503512 }
504513 element . value = value ;
Original file line number Diff line number Diff line change @@ -684,6 +684,26 @@ describe('jqLite', function() {
684684 expect ( input [ 0 ] . value ) . toEqual ( 'abc' ) ;
685685 expect ( input . val ( ) ) . toEqual ( 'abc' ) ;
686686 } ) ;
687+
688+ it ( 'should get an array of selected elements from a multi select' , function ( ) {
689+ expect ( jqLite (
690+ '<select multiple>' +
691+ '<option selected>test 1</option>' +
692+ '<option selected>test 2</option>' +
693+ '</select>' ) . val ( ) ) . toEqual ( [ 'test 1' , 'test 2' ] ) ;
694+
695+ expect ( jqLite (
696+ '<select multiple>' +
697+ '<option selected>test 1</option>' +
698+ '<option>test 2</option>' +
699+ '</select>' ) . val ( ) ) . toEqual ( [ 'test 1' ] ) ;
700+
701+ expect ( jqLite (
702+ '<select multiple>' +
703+ '<option>test 1</option>' +
704+ '<option>test 2</option>' +
705+ '</select>' ) . val ( ) ) . toEqual ( null ) ;
706+ } ) ;
687707 } ) ;
688708
689709
You can’t perform that action at this time.
0 commit comments