El problema es que stas trabajando supuestamente con un evento onkeyup sobre cada campo en particular, en ese caso, lo que tendrías que hacer es una capa (puede ser un input extra sin bordes) para mensajes de error para cada elemento
ejemplo
Código HTML:
Ver original<input type="text" id="pregunta" name="pregunta" value="" onkeyup="validar(this.id);" /> <span id="error_pregunta"></span><br /> <input type="text" id="pregunta2" name="pregunta2" value="" onkeyup="validar(this.id);" /> <span id="error_pregunta2"></span><br /><br />
fijate los id de los span, con eso podés hacer dinámico la designación del elemento construyendo el id con el valor campo(que es el id) pasado a la función
Código Javascript
:
Ver originaldocument.getElementById('error_'+campo).innerHTML = 'Debe ingresar un número entero';
Cuando son forms mas complejos, con inputs de text, selects, radio, checkboxes, etc, yo prefiero esto ya pasar todos los errrores juntos
primero inicializás unas variables
Código Javascript
:
Ver originalvar mensajes = "";
var error ="";
//luego, ante cada condición (supongamos que el else es para el error)
if(....){
// ok
}else{
error = "si";
mensajes += "falta nombre...<br>"
}
if(....){
// ok
}else{
error = "si";
mensajes += "falta apellido...<br>"
}
if(....){
// ok
}else{
error = "si";
mensajes += "seleccione un pais<br>"
}
// ante cualquier error producido la variable error ya no estaria vacia
// entonces
if(error !== ""){
document.getElementById('mensaje').innerHTML = mensajes;
return false; // evitás el submit
}
y la función de validación la llamo con
olvidándome del onkeyup
Espero haberme explicado
Saludos