File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -479,6 +479,15 @@ forEach({
479479
480480 val : function ( element , value ) {
481481 if ( isUndefined ( value ) ) {
482+ if ( nodeName_ ( element ) === 'SELECT' && element . multiple ) {
483+ var result = [ ] ;
484+ forEach ( element . options , function ( option ) {
485+ if ( option . selected ) {
486+ result . push ( option . value || option . text ) ;
487+ }
488+ } ) ;
489+ return result . length === 0 ? null : result ;
490+ }
482491 return element . value ;
483492 }
484493 element . value = value ;
Original file line number Diff line number Diff line change @@ -661,6 +661,26 @@ describe('jqLite', function() {
661661 expect ( input [ 0 ] . value ) . toEqual ( 'abc' ) ;
662662 expect ( input . val ( ) ) . toEqual ( 'abc' ) ;
663663 } ) ;
664+
665+ it ( 'should get an array of selected elements from a multi select' , function ( ) {
666+ expect ( jqLite (
667+ '<select multiple>' +
668+ '<option selected>test 1</option>' +
669+ '<option selected>test 2</option>' +
670+ '</select>' ) . val ( ) ) . toEqual ( [ 'test 1' , 'test 2' ] ) ;
671+
672+ expect ( jqLite (
673+ '<select multiple>' +
674+ '<option selected>test 1</option>' +
675+ '<option>test 2</option>' +
676+ '</select>' ) . val ( ) ) . toEqual ( [ 'test 1' ] ) ;
677+
678+ expect ( jqLite (
679+ '<select multiple>' +
680+ '<option>test 1</option>' +
681+ '<option>test 2</option>' +
682+ '</select>' ) . val ( ) ) . toEqual ( null ) ;
683+ } ) ;
664684 } ) ;
665685
666686
You can’t perform that action at this time.
0 commit comments