Además de ciertos errores como no cerrar bien las llaves, la función validarFormulario tiene que estar fuera del $(document).ready o te dirá que no está declarada.
Pon el código tal cual te lo pongo dentro del <head>.
Código Javascript
:
Ver originalfunction validarFormulario(){
var valido= true;
// Valido el nombre
if ($('#nombre').val()==0){
valido= false;
jQuery("#errorNombre").show().css({'color':'red'});
}else{
jQuery("#errorNombre").hide(300);
}
// Valido el apellido
if ($('input#apellido').val()==0){
valido= false;
$("span#errorApellido").show().css({'color':'red'});
}else{
$("span#errorApellido").hide(300);
}
// Valido el email
if ($('input#email').val()==""){
valido= false;
$("#errorEmail").show().css({'color':'red'});
}else{
var expreg = /[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,3}/
if (!expreg.test($('#email').val())) {
valido= false;
$("#errorEmail").show().css({'color':'red'});
}else{
$("#errorEmail").hide(300);
}
}
return valido;
}
$('#formusuario').ready(function(){
$('#formusuario').submit(function() {
// Enviamos el formulario usando AJAX
$.ajax({
type: 'POST',
url: $(this).attr('action'),
data: $(this).serialize(),
// Mostramos un mensaje con la respuesta de PHP
success: function(data) {
$('#resultado').html(data);
}
})
return false;
});
});
Así debería funcionarte sin ningún problema.
Aun así, se puede hacer de otro manera, a mi parecer mejor (no mezclas el html y el javascript).
Código Javascript
:
Ver originalfunction validarFormulario(){
var valido= true;
// Valido el nombre
if ($('#nombre').val()==0){
valido= false;
jQuery("#errorNombre").show().css({'color':'red'});
}else{
jQuery("#errorNombre").hide(300);
}
// Valido el apellido
if ($('input#apellido').val()==0){
valido= false;
$("span#errorApellido").show().css({'color':'red'});
}else{
$("span#errorApellido").hide(300);
}
// Valido el email
if ($('input#email').val()==""){
valido= false;
$("#errorEmail").show().css({'color':'red'});
}else{
var expreg = /[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,3}/
if (!expreg.test($('#email').val())) {
valido= false;
$("#errorEmail").show().css({'color':'red'});
}else{
$("#errorEmail").hide(300);
}
}
return valido;
}
$('#formusuario').ready(function(){
$('#formusuario').submit(function() {
if (validarFormulario()){
// Enviamos el formulario usando AJAX
$.ajax({
type: 'POST',
url: $(this).attr('action'),
data: $(this).serialize(),
// Mostramos un mensaje con la respuesta de PHP
success: function(data) {
$('#resultado').html(data);
}
})
}
return false;
});
});
Y le quitas el onSubmit en el formulario:
Código HTML:
Ver original<form name="formularioUsuario" id="formusuario" action="procesar.php" method="POST">
<input type="text" name="nombre" id="nombre" value="" /> <span id="errorNombre" style="display:none;" > Campo requerido
<input type="text" name="apellido" id="apellido" value="" /> <span id="errorApellido" style="display:none;" > Campo requerido
<input type="text" name="email" id="email" value="" /> <span id="errorEmail" style="display:none;" > Campo requerido y debe estar correctamente escrito
<input type="submit" name="guardar" value="Guardar" />
<input type="button" name="cancelar" value="Cancelar" onclick="document.location.href = document.referrer" />
Saludos