code: function getSelectValues (select, selectedOptions) {
      var value = [],
          options = selectedOptions || select.selectedOptions,
          opt;
  
      for (var i = 0, len = options.length; i < len; i++) {
        opt = options[i];
  
        if (!(opt.disabled || opt.parentNode.tagName === 'OPTGROUP' && opt.parentNode.disabled)) {
          value.push(opt.value || opt.text);
        }
      }
  
      if (!select.multiple) {
        return !value.length ? null : value[0];
      }
  
      return value;
    }
docs: much faster than $.val()