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 @@ -499,6 +499,15 @@ forEach({
499
499
500
500
val : function ( element , value ) {
501
501
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
+ }
502
511
return element . value ;
503
512
}
504
513
element . value = value ;
Original file line number Diff line number Diff line change @@ -684,6 +684,26 @@ describe('jqLite', function() {
684
684
expect ( input [ 0 ] . value ) . toEqual ( 'abc' ) ;
685
685
expect ( input . val ( ) ) . toEqual ( 'abc' ) ;
686
686
} ) ;
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
+ } ) ;
687
707
} ) ;
688
708
689
709
You can’t perform that action at this time.
0 commit comments