getFormElementValue(el) {
    let value2 = null;
    let checked = null;
    switch (el.type) {
      case "checkbox":
      case "radio": {
        value2 = checked = el.checked;
        break;
      }
      case "select-multiple": {
        value2 = Array.from(el.selectedOptions).map((option) => option.value);
        break;
      }
      default: {
        if (el.value) value2 = el.value;
        if (el.checked) {
          value2 = checked = el.checked;
        }
        if (el.valueAsNumber && !isNaN(el.valueAsNumber)) {
          value2 = el.valueAsNumber;
        }
        break;
      }
    }
    return { value: value2, checked };
  }
Check for el.value and el.checked. el.checked will also set the value return for ease of use.
Only 2 input types use el.checked, different from all other input types - this is annoying.
@param {HTMLElement} el HTML Element to be checked
@returns {{value:boolean|null, checked:boolean|null}} Return null if properties not present, else the appropriate value