This repository was archived by the owner on Apr 12, 2024. It is now read-only.
File tree 2 files changed +29
-0
lines changed
2 files changed +29
-0
lines changed Original file line number Diff line number Diff line change @@ -479,6 +479,15 @@ forEach({
479
479
480
480
val : function ( element , value ) {
481
481
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
+ }
482
491
return element . value ;
483
492
}
484
493
element . value = value ;
Original file line number Diff line number Diff line change @@ -661,6 +661,26 @@ describe('jqLite', function() {
661
661
expect ( input [ 0 ] . value ) . toEqual ( 'abc' ) ;
662
662
expect ( input . val ( ) ) . toEqual ( 'abc' ) ;
663
663
} ) ;
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
+ } ) ;
664
684
} ) ;
665
685
666
686
You can’t perform that action at this time.
0 commit comments