Ho trovato la soluzione, dovevo verificare prima l'esistenza dell'oggetto (con la condizione typeof(valore) != 'undefined').
Inoltre l'errore non veniva rilevato mai perché se il valore dell'oggetto veniva castato con parseFloat() il typeof restituiva sempre number, ma era considerato come NaN dall'interprete.
Quindi, siccome NaN è un valore falso, basta controllare che questo si verifichi perché si incrementi errorMsg:
[php]
function checkFields() {
var d = document;
var errorMsg = "";
while (counter < 15) {
var objStr = "d.nomeForm.value_"+counter;
var obj = eval(objStr);
if (typeof(obj) != 'undefined') { // if the object exists:
var objValue = parseFloat(obj.value);
if (!objValue) {
errorMsg += 'The value entered in field ' + counter + ' must be numeric. objValue = ' + objValue + '\n';
}
}
counter++;
}
if (errorMsg != "") {
alert(errorMsg);
return false;
} else {
alert('ok');
return true;
}
[/php]