diff --git a/lib/Mojo/DOM.pm b/lib/Mojo/DOM.pm
index 3934480..8e45028 100644
--- a/lib/Mojo/DOM.pm
+++ b/lib/Mojo/DOM.pm
@@ -382,8 +382,11 @@ sub _val {
   return $self->text if $self->type eq 'textarea';
 
   # "select"
-  return [map { $_->{value} } $self->find('option[selected]')->each]
-    if $self->type eq 'select';
+  if ($self->type eq 'select') {
+    my @values = map { $_->{value} } $self->find('option[selected]')->each;
+    return undef unless @values;
+    return \@values;
+  }
 
   # "option"
   return $self->{value} || $self->text if $self->type eq 'option';
@@ -873,7 +876,8 @@ Extract values from C<form>, C<input>, C<select>, C<option> and C<textarea>
 elements or return C<undef>.
 
 In case of C<select> this method will find all the C<option>s that is selected
-and return them in an array-ref with zero or more elements.
+and return them in an array-ref with one or more elements. Returns C<undef> if
+no options has been selected.
 
 In case of C<form> it will fetch the values from all the child field elements
 that is checked, selected or has a value and return them as in a hash-ref