se invece di testare "undefined" si andasse alla definizione del campo e gli si desse un value di default?
poi HTML5 potrebbe venire in aiuto mi sembra che esista una opzione per segnalare che è obbligatorio quando non lo si inserisca e misualizzi il messaggio di errore preconfigurato del caso...
codice:<input type="text" id="campo" value="" required >
ciao