Hola:
Yo no tengo ninguna duda de las validaciones... la forma adecuada es en la propia etiqueta form de la forma: onsubmit="return validar(this)"...
Al usar el tag form, al usar como parámetro this, se referencia todo el formulario, en el caso de los selects, es preferible que si hay un option "introductorio" del tipo seleccione un item tenga un value="" y la validación compruebe que sea distinto de "".
La función validadora debe retornar siempre false para anular el envío... por ejemplo si el select tiene name="sel", el envío se cancelaría con:
function validar(f) {
return f["sel"].value != "";
}
Debes controlar el resto de campos del form, pero la idea es la que se muestra.
Saludos