He visto tu modificación con cuidado y parece que esta bien, de hecho puedes probar que pasa colocando alerts, quizá uno adentro del for para ver cada valor y claro, uno en lugar del submit:
Código javascript
:
Ver original<script>
function validar(){
msg = ''
Cnt = 0
for (i=0; i<document.form.costo.length;i++){
if (document.form.costo[i].value == ""){
Cnt++;
msg += Cnt + ') ' + document.form.descrip[i].value + '\n'
}
}
if (Cnt>0)
{ alert('Se han encontrado '+Cnt+' claves sin precio: \n'+msg); return true; }
alert('se manda')
}
Debes de debuguear e ir probando hasta que deduzcas que esta mal, seguro es una nimiedad, problema debe estar con el contenido del campo (supongo), es decir en la linea if (document.form.costo[i].value == ""), tal vez haciendo un trim, no se, cosa de hacer pruebas.