Foros del Web » Programando para Internet » PHP »

validacion con ajax

Estas en el tema de validacion con ajax en el foro de PHP en Foros del Web. hola espero puedan ayudarme con esta duda que tengo, es respecto a como debo validar con ajax y evitar que se envien los campos de ...
  #1 (permalink)  
Antiguo 20/09/2011, 09:04
 
Fecha de Ingreso: julio-2011
Ubicación: donde me encuentre la noche
Mensajes: 140
Antigüedad: 13 años, 3 meses
Puntos: 3
Pregunta validacion con ajax

hola espero puedan ayudarme con esta duda que tengo, es respecto a como debo validar con ajax y evitar que se envien los campos de mi formulario antes de ser enviados, ya que estoy haciendo una modificacion hasta el momento todo funciona perfectamente, imprimo mis datos en una tabla, al dar clic en el id de algun registro en un div lightbox con campos imprimo los datos del registro para que puedan ser modificados, la idea es que ninguno de estos campos se actualizen si estan vacios, me explico, bueno les anexo mi codigo espero puedan ayudarme gracias

mi archivo principal php
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
<script src="../../../js/jquery-1.6.min.js" type="text/javascript"></script>
<script type="text/javascript">
function objetoAjax(){
    var xmlhttp=false;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
           xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            xmlhttp = false;
          }
    }

    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}

function enviarDatosEmpleado(){
    //donde se mostrará lo resultados
    divResultado = document.getElementById('resultado');
    divFormulario = document.getElementById('formulario');

    //valores de los inputs
    Id_Contacto=document.frmempleado.Id_Contacto.value;
    Name=document.frmempleado.Name.value;
    Lastname=document.frmempleado.Lastname.value;
    Sex=document.frmempleado.Sex.value;
    Phone=document.frmempleado.Phone.value;
    Email=document.frmempleado.Email.value;
    Direction=document.frmempleado.Direction.value;
    
    
    //instanciamos el objetoAjax
    ajax=objetoAjax();
    //usando del medoto POST
    //archivo que realizará la operacion
    //actualizacion.php
    ajax.open("POST", "actualizacion.php",true);
    ajax.onreadystatechange=function() {
        if (ajax.readyState==4) {
            //mostrar los nuevos registros en esta capa
            divResultado.innerHTML = ajax.responseText
            //mostrar un mensaje de actualizacion correcta
        divFormulario.innerHTML = "<p style=\"border:1px solid red; width:380px;\">La actualizaci&oacute;n se realiz&oacute; correctamente</p>";
         
        }
    }
    //muy importante este encabezado ya que hacemos uso de un formulario
    ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    //enviando los valores
    ajax.send("Id_Contacto="+Id_Contacto+"&Name="+Name+"&Lastname="+Lastname+"&Sex="+Sex+"&Phone="+Phone+"&Email="+Email+"&Direction="+Direction)
}

function pedirDatos(Id_Contacto){
//         document.getElementById('x').style.display='block';
    //donde se mostrará el formulario con los datos
    divFormulario = document.getElementById('formulario');
     document.getElementById('x').style.display='block';
          document.getElementById('insideform').style.display='block';
    //instanciamos el objetoAjax
    ajax=objetoAjax();
    //uso del medotod GET
    ajax.open("POST", "consulta_por_id.php");
    ajax.onreadystatechange=function() {
        if (ajax.readyState==4) {
            //mostrar resultados en esta capa
            divFormulario.innerHTML = ajax.responseText
            //mostrar el formulario
            divFormulario.style.display="block";
        }
    }
    //como hacemos uso del metodo GET
    //colocamos null
    ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    //enviando los valores
    ajax.send("Id_Contacto="+Id_Contacto)

}

$(document).ready(function(){
    $("#x").click(function(){
            $("#formulario, #x, #insideform").fadeOut(800, function(){
                });
                });
    });    
    






</script>
<style>

#insideform  {
background-color:#000000;
    height:48%;
    top:26%;
    width:37%;
    left:32%;
    position:absolute;
    z-index:20;
    
    filter:alpha(opacity=60);
    opacity:0.6;
    -webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;






}
#formulario {
    background-color:#000;
color:#F8C11D;
    height:38%;
    top:29%;
    width:32%;
    left:33.5%;
    position:absolute;
    z-index:22;
    
    
    padding-top:2%;
    padding-left: 2%;
    -webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
    }


#x {
    color:#fff;
    height:auto;
    width:auto;
    position:absolute;
    z-index:23;
    top:29%;
    right:34%;
    font-weight: bold;
}

#xy{
    width:300px;
    height:25px;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 3px;
    background-color:#F5F5F5;
    border: thin solid #CCCCCC;
    color: #003366;
    font-style: italic;
    font-weight: bold;
    }



</style>
</head>
<body>
<h2>Modificar datos del empleado</h2>
<p>Clic en el c&oacute;digo del empleado para modificar sus datos. </p>
<div id="formulario" style="display:none;"></div>
<div id="x" style="display:none;">Cerrar</div>
<div id="insideform" style="display:none;"></div>
<div id="resultado">
<?php
$bd_host 
"localhost"
$bd_usuario "root"
$bd_password ""
$bd_base "agenda"
$con mysql_connect($bd_host$bd_usuario$bd_password); 
mysql_select_db($bd_base$con); 

//consulta todos los empleados

$sql=mysql_query("SELECT * FROM contactos",$con);


?>
<table style="border:1px solid #FF0000; color:#000099;width:400px;">
<tr style="background:#99CCCC;">
    <td>Id</td>
    <td>Nombre</td>
    <td>Apellidos</td>
       <td>Sexo</td>
    <td>Telefono</td>
       <td>Email</td>
       <td>Direccion</td>
</tr>

<?php
while($modificar mysql_fetch_array($sql)){
    echo 
"    <tr>";
    
//mediante el evento onclick llamaremos a la funcion PedirDatos(), la cual tiene como parametro
    //de entrada el ID del empleado
    
echo "         <td><a style=\"text-decoration:underline;cursor:pointer;\" onclick=\"pedirDatos('".$modificar['Id_Contacto']."')\">".$modificar['Id_Contacto']."</a></td>";
    echo 
"         <td>".$modificar['Name']."</td>";
    echo 
"         <td>".$modificar['Lastname']."</td>";
    echo 
"         <td>".$modificar['Sex']."</td>";
    echo 
"         <td>".$modificar['Phone']."</td>";
    echo 
"         <td>".$modificar['Email']."</td>";
    echo 
"         <td>".$modificar['Direction']."</td>";
    echo 
"    </tr>";
}
?>
</table>

</div>
</body>
</html>
mi consulta por id
Código PHP:
<?php
$bd_host 
"localhost"
$bd_usuario "root"
$bd_password ""
$bd_base "agenda"
$con mysql_connect($bd_host$bd_usuario$bd_password); 
mysql_select_db($bd_base$con); 

//consulta los datos del empleado por su id
$Id_Contacto=$_POST['Id_Contacto'];
$sqls=mysql_query("SELECT * FROM contactos WHERE Id_Contacto=$Id_Contacto",$con);
$row3 mysql_fetch_array($sqls);
//valores de las consultas
$Id_Contacto=$row3['Id_Contacto'];
$Name=$row3['Name'];
$Lastname=$row3['Lastname'];
$Sex=$row3['Sex'];
$Phone=$row3['Phone'];
$Email=$row3['Email'];
$Direction=$row3['Direction'];
//muestra los datos consultados en los campos del formulario
?>
<form name="frmempleado" action="" 
onsubmit="enviarDatosEmpleado(); return false">
    <input name="Id_Contacto" type="hidden" value="<?php echo $Id_Contacto?>" />
    <table width="336" border="0">
    <tr>
      <td><div align="right">Nombre</div></td>
      <td><input name="Name" type="text" value="<?php echo $Name?>" id="xy" onkeypress="return validar(event)"/></td>
    </tr>
    <tr>
      <td><div align="right">Apellido</div></td>
      <td><input name="Lastname" type="text" value="<?php echo $Lastname?>" id="xy"/></td>
    </tr>
    <tr>
      <td><div align="right">Sexo</div></td>
      <td><select name="Sex" id="xy">
        <?php
      
echo "<option value=\"".$Sex."\">".$Sex."</option>"
      
?>
        <option value="Femenino">Femenino</option>
        <option value="Masculino">Masculino</option>
      </select></td>
    </tr>
    <tr>
      <td><div align="right">Telefono</div></td>
      <td><input name="Phone" type="text" value="<?php echo $Phone?>" id="xy"/></td>
    </tr>
    <tr>
      <td><div align="right">Email</div></td>
      <td><input name="Email" type="text" value="<?php echo $Email?>" id="xy"/></td>
    </tr>
    <tr>
      <td><div align="right">Direccion</div></td>
      <td><input name="Direction" type="text" value="<?php echo $Direction?>" id="xy"/></td>
    </tr>
    <tr>
      <td><div align="right"></div></td>
      <td><div align="right">
        <input type="submit" name="boton2" value="Actualizar" id="update"/>
      </div></td>
    </tr>
  </table>
  <p>&nbsp;</p>
</form>
aqui radica mi problema, como hago para que al presionar el boton2 verifique que si el campo esta vacio no envie mi formulario?




y mi actualizacion
Código PHP:
<?php
//Configuracion de la conexion a base de datos
$bd_host "localhost"
$bd_usuario "root"
$bd_password ""
$bd_base "agenda"
$con mysql_connect($bd_host$bd_usuario$bd_password); 
mysql_select_db($bd_base$con); 

//variables POST
$Id_Contacto=$_POST['Id_Contacto'];
$Name=$_POST['Name'];
$Lastname=$_POST['Lastname'];
$Sex=$_POST['Sex'];
$Phone=$_POST['Phone'];
$Email=$_POST['Email'];
$Direction=$_POST['Direction'];

//actualiza los datos
$sql1="UPDATE contactos SET Name='$Name', Lastname='$Lastname', Phone='$Phone', Email='$Email', Direction='$Direction', Sex='$Sex' WHERE Id_Contacto=$Id_Contacto";

mysql_query($sql1,$con);

include(
'consulta.php');
?>
  #2 (permalink)  
Antiguo 20/09/2011, 10:08
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: validacion con ajax

antes de esta linea
//instanciamos el objetoAjax
ajax=objetoAjax();

valida todas la variables
  #3 (permalink)  
Antiguo 20/09/2011, 10:36
 
Fecha de Ingreso: julio-2011
Ubicación: donde me encuentre la noche
Mensajes: 140
Antigüedad: 13 años, 3 meses
Puntos: 3
Respuesta: validacion con ajax

Cita:
Iniciado por Patriarka Ver Mensaje
antes de esta linea
//instanciamos el objetoAjax
ajax=objetoAjax();

valida todas la variables
gracias me ha funcionado!!
  #4 (permalink)  
Antiguo 20/09/2011, 11:27
 
Fecha de Ingreso: julio-2011
Ubicación: donde me encuentre la noche
Mensajes: 140
Antigüedad: 13 años, 3 meses
Puntos: 3
Pregunta Respuesta: validacion con ajax

Cita:
Iniciado por Patriarka Ver Mensaje
antes de esta linea
//instanciamos el objetoAjax
ajax=objetoAjax();

valida todas la variables
Bueno ahora me surge este problema, en efecto valido y ahora ya notifico con un alert que el campo debe ser llanado, hago un focus para aparecer el cursor en el campo que debe ser llenado, hasta aqui todo bien, el problema es:

como evito el envio de la informacion, despues de que he notificado al usuario que el campo esta vacio, tengo este codigo asi

Cita:
if(Name==""){
alert("Debes Introducir un Nombre de contacto");
window.document.frmempleado.Name.focus();
}else
if((Name).val().length <= 3){
alert ("La Longitud del Nombre Debe Incluir por lo Menos 4 Caracteres");
window.document.frmempleado.Name.focus();
}else


//instanciamos el objetoAjax
ajax=objetoAjax();
.
.
.
intente poner un return false despues de cada focus pero no me funciona, sigue enviandome los datos a actualizar aun cuando me a notificado que el campo esta vacio, como soluciono esto?
saludos y gracias de nuevo!!
  #5 (permalink)  
Antiguo 20/09/2011, 14:24
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 11 meses
Puntos: 51
Respuesta: validacion con ajax

Podés probar cambiar esto:

Código HTML:
Ver original
  1. <form name="frmempleado" action=""
  2. onsubmit="enviarDatosEmpleado(); return false">

por esto:

Código HTML:
Ver original
  1. <form name="frmempleado" action=""
  2. onsubmit="return enviarDatosEmpleado();">

Luego en la función enviarDatosEmpleado(), antes de cerrar la última llave, agregás un

Código Javascript:
Ver original
  1. return false;
  #6 (permalink)  
Antiguo 20/09/2011, 16:19
 
Fecha de Ingreso: julio-2011
Ubicación: donde me encuentre la noche
Mensajes: 140
Antigüedad: 13 años, 3 meses
Puntos: 3
Respuesta: validacion con ajax

Cita:
Iniciado por walterdevel Ver Mensaje
Podés probar cambiar esto:

Código HTML:
Ver original
  1. <form name="frmempleado" action=""
  2. onsubmit="enviarDatosEmpleado(); return false">

por esto:

Código HTML:
Ver original
  1. <form name="frmempleado" action=""
  2. onsubmit="return enviarDatosEmpleado();">

Luego en la función enviarDatosEmpleado(), antes de cerrar la última llave, agregás un

Código Javascript:
Ver original
  1. return false;
ya lo he resuelto, antes de cualquier manera gracias

Etiquetas: ajax, html, mysql, registro, sql, tabla, variables, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:11.