mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-03-30 17:03:39 +08:00
fix(jqLite): return array from multi select in val()
This commit is contained in:
@@ -479,6 +479,15 @@ forEach({
|
||||
|
||||
val: function(element, value) {
|
||||
if (isUndefined(value)) {
|
||||
if (nodeName_(element) === 'SELECT' && element.multiple) {
|
||||
var result = [];
|
||||
forEach(element.options, function (option) {
|
||||
if (option.selected) {
|
||||
result.push(option.value || option.text);
|
||||
}
|
||||
});
|
||||
return result.length === 0 ? null : result;
|
||||
}
|
||||
return element.value;
|
||||
}
|
||||
element.value = value;
|
||||
|
||||
@@ -661,6 +661,26 @@ describe('jqLite', function() {
|
||||
expect(input[0].value).toEqual('abc');
|
||||
expect(input.val()).toEqual('abc');
|
||||
});
|
||||
|
||||
it('should get an array of selected elements from a multi select', function () {
|
||||
expect(jqLite(
|
||||
'<select multiple>' +
|
||||
'<option selected>test 1</option>' +
|
||||
'<option selected>test 2</option>' +
|
||||
'</select>').val()).toEqual(['test 1', 'test 2']);
|
||||
|
||||
expect(jqLite(
|
||||
'<select multiple>' +
|
||||
'<option selected>test 1</option>' +
|
||||
'<option>test 2</option>' +
|
||||
'</select>').val()).toEqual(['test 1']);
|
||||
|
||||
expect(jqLite(
|
||||
'<select multiple>' +
|
||||
'<option>test 1</option>' +
|
||||
'<option>test 2</option>' +
|
||||
'</select>').val()).toEqual(null);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user