Hola:
Siempre, siempre, con botones tipo submit, y en el actión un destino que valide en el servidor, luego, si quieres hacerlo asincrono le añades:
onsubmit="return envio_asincrono(this)"; y en ese envío cancelarlo con return false después de esa llamada ajax.
Las razones son simples, el formulario es accesible porque se puede tener javascript desactivado.
Saludos