Comunidad de diseño web y desarrollo en internet online

validar campos en formulario contacto as3

Citar            
MensajeEscrito el 04 Ene 2010 10:01 pm
tengo este codigo para el envio de mail de contacto en as3 con php, y funciona, el problema es que tambien me envia aun no rellenando todo los campos, y no se donde tendria que poner el if( txt x, no esta relleno pues este mensaje de error), este es mi codigo:

Código ActionScript :

var tf2:TextFormat=new TextFormat();
tf2.font="arial";
tf2.color=0x990000;
tf2.size=16;
tf2.align=TextFormatAlign.CENTER;

var txtestado:TextField=new TextField();
txtestado.defaultTextFormat=tf2;
txtestado.width=150;
txtestado.x=btnborrar.x-200;
txtestado.y=btnborrar.y;
addChild(txtestado);
      btnborrar.addEventListener(MouseEvent.MOUSE_DOWN, onBorrar);
      btnenviar.addEventListener(MouseEvent.MOUSE_DOWN, onEnviar);

      function onBorrar(obj:Event) {
  
          txtnombre.text = "";
  
          txtempresa.text = "";
 
          txtemail.text = "";
        txtmensaje.text="";
        txtestado.text="";
  

      }
  
      function onEnviar(obj:Event) {
       

          var urlVars:URLVariables = new URLVariables();
 
          urlVars.nombre = txtnombre.text;
  
  
          urlVars.email = txtemail.text;
 
          urlVars.mensaje = txtmensaje.text;
 
         

          var urlRequ:URLRequest = new URLRequest("mail.php");
  
          urlRequ.method = URLRequestMethod.POST;

          urlRequ.data = urlVars;
     
 
          var urlLoad:URLLoader = new URLLoader();

          urlLoad.load(urlRequ);
 
          urlLoad.addEventListener(Event.COMPLETE, onSendComplete);
   urlLoad.addEventListener(IOErrorEvent.IO_ERROR, onSendError);

      }
 function onSendComplete(obj:Event) {
 txtestado.text = "¡¡¡Mensaje Enviado!!!";
}
 function onSendError(obj:Event) {
txtestado.text = "¡¡¡Mensaje Fallido!!!";
 }


un saludo.

Por currodelatajadera

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ene 2010 10:49 am
Al principio de la función onEnviar .... por ejemplo:

Código ActionScript :

function onEnviar(obj:Event) {         
       var error:String = ""
       if(txtemail.text=="") error = "Falta el nombre\n"
       if(txtemail.text=="") error = "Falta el email\n"
       if(txtmensaje.text=="") error = "Falta el mensaje\n"
       if(error==""){
          var urlVars:URLVariables = new URLVariables(); 
          urlVars.nombre = txtnombre.text;   
          urlVars.email = txtemail.text; 
          urlVars.mensaje = txtmensaje.text; 
          (....)
      } else error_txt.text = error


Los chequeos pueden ser mas elaborados que ver si está vacío, pero eso ya es trabajar sobre las condiciones de los if

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Ene 2010 06:55 pm
gracias jorge una vez mas.

Por currodelatajadera

33 de clabLevel



 

msie8
Citar            
MensajeEscrito el 06 Ene 2010 10:14 pm
¿Cómo podría mostrar los mensaje de error en una misma caja de texto?

De esta manera solamente me muestra el último error.

Código ActionScript :


// Función que se encarga de enviar el mail
function envioFormulario(e:MouseEvent):void {
      
   if(nombre_txt.text==""){ 
      error = "Falta el nombre\n";
   }   
   if(apellidos_txt.text==""){ 
      error = "Faltan los apellidos\n" 
   }
   if(email_txt.text==""){
      error = "Falta el email\n"    
   }
   if(mensaje_txt.text==""){ 
      error = "Falta el mensaje\n"
   }
   if(error==""){ 
      // Variable que contendrá los campos del correo
      var varCorreo:URLVariables = new URLVariables();
      
      // Definimos los campos del formulario y les agregamos el valor de las cajas de texto.
      varCorreo.nombre = nombre_txt.text;
      varCorreo.apellidos = apellidos_txt.text;
      varCorreo.email = email_txt.text;
      varCorreo.mensaje = mensaje_txt.text;
   } 
   else{ 
      respuesta_txt.text = error;
   }     

   // Creamos una variable que almacenará los datos del envío
   var envio:URLRequest = new URLRequest();

   // Definimos los datos del envío, el método y le pasamos las variables de los campos del formulario.
   envio.url = "php/validamail.php";
   envio.method = URLRequestMethod.POST;
   envio.data = varCorreo;

   // Creamos la instancia cargador.
   var cargador:URLLoader = new URLLoader();

   // Definimos el formato de Variables para el cargador .
   cargador.dataFormat = URLLoaderDataFormat.VARIABLES;

   // Añadimos un listener al cargador que espera a completar la carga para ejecutar la función completeHandler.
   cargador.addEventListener(Event.COMPLETE, completeHandler);

   //intentamos cargar el envío y si hay algún error lo detectamos
   try {
      cargador.load(envio);
   } catch (error:Error) {
      respuesta_txt.text= "Error en el envío";
   }
   
   // Función que obtiene respuesta de php para confirmar que todo está correcto o no.
   function completeHandler(event:Event):void {
      respuesta_txt.text=event.target.data.respuestaPHP;
   }
}



Aparte me sale el siguiente error, ¿a qué se debe?:

Código ActionScript :

Error: Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs.
   at Error$/throwError()
   at flash.net::URLVariables/decode()
   at flash.net::URLVariables()
   at flash.net::URLLoader/onComplete()

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Ene 2010 12:10 pm
Concatena:

Código ActionScript :

var error:String = ""
if(nombre_txt.text==""){  
      error += "Falta el nombre\n"; 
   }   


Usa += para todas las asignaciones de error (asegurate que la caja de texto sea multiline y tenga suficientes líneas)
El error sale porque el PHP debe estar devolviendo un error

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Ene 2010 01:38 pm
Gracias Jorge!

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Jul 2010 01:06 am
Hola amigos, estoy viendo este post y me ayudó a mejorar un tip publicado aquí mismo sobre enviar correo con Flash y php.
Ahora, me encuentro con un problema y quizá me puedan orientar.
Al agregar las líneas de código que sirven para "trabar" el envío del formulario si hay campos sin completar, en mi campo destinado a mensaje de error me muestra que no he completado, pero igualmente envía el formulario (que llega) aunque los campos de datos requeridos estén vacíos.
Adjunto el código a ver donde me estoy equivocando.
Saludos.
Tal cual dice el tip, puse tres input text, dos dinamic text y un botón.

Código ActionScript :

//Función que se ejecuta al presionar el botón btEnviar.
function irAEnviar(event:MouseEvent):void {
   var vacio:String= "";
   if (txtNombre.text == ""){
      vacio += "Falta el nombre\n";
   }
   if (txtApellidos.text == ""){
      vacio += "Falta el apellido\n";
   }
   if (txtEmail.text == ""){
      vacio += "Falta el email\n";
   }
   if(vacio==""){
   //Creamos misVariables la cual contendrá nuestros campos.
   var misVariables:URLVariables = new URLVariables();
   
   //Definimos los campos y les agregamos el valor de las cajas de texto.
   misVariables.nombre = txtNombre.text;
   misVariables.apellidos = txtApellidos.text;
   misVariables.email = txtEmail.text;
   }else{
      lbError.text = vacio;
   }

   //Creamos la instancia pedido que contendrá los datos de envío.
   var pedido:URLRequest = new URLRequest();

   //Pasamos los datos al pedido, el método de envío y le cargamos misVariables.
   pedido.url = "http://www.troyaconsultores.com.ar/forms/base.php";
   pedido.method = URLRequestMethod.POST;
   pedido.data = misVariables;

   //Creamos la instancia cargador.
   var cargador:URLLoader = new URLLoader();

   //Damos formato de Variables a cargador .
   cargador.dataFormat = URLLoaderDataFormat.VARIABLES;

   //Listener de cargador que espera se COMPLETE la carga para ejecutar la función completeHandler.
   cargador.addEventListener(Event.COMPLETE, completeHandler);

   //intentamos cargar el pedido y si hay algún error lo detectamos
   try {
      cargador.load(pedido);
   } catch (error:Error) {
      lbError.text= "Error en el envío";
   }
   
   //Aquí obtenemos la respuesta del PHP para confirmar en flash que todo salió bien o mal.
   function completeHandler(event:Event):void {
      lbRespuesta.text=event.target.data.respuestaPHP;
   }
}

//Listener que está esperando el Click en el btEnviar para ejecutar la función irAEnviar
btEnviar.addEventListener(MouseEvent.CLICK, irAEnviar);

Por CRD

80 de clabLevel



Genero:Masculino  

Diseño Filete Ilustración

msie8
Citar            
MensajeEscrito el 29 Jul 2010 01:39 pm
Abre nuevo hilo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Jul 2010 05:42 pm
No sé si entendí bien: divido en dos partes?
1 - hasta que comprobé que los campos no están vacíos
2 - recolección de variables y envío php

Por CRD

80 de clabLevel



Genero:Masculino  

Diseño Filete Ilustración

msie8
Citar            
MensajeEscrito el 29 Jul 2010 06:16 pm
No, te pedía quue habras un nuevo POST porque no me gustan los enganchados.
Anyway, el if que controla si hay error es este:

Código ActionScript :

if(vacio==""){
  ...
} else {
 ...
}


Pero el envío se hace unas líneas mas abajos, en el try/catch, es decir por mas que haya error, se envía (aunque con variables vacías)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Jul 2010 06:35 pm
Lo pude solucionar colocando otro if antes del envío.
Gracias por todo.

Código ActionScript :

try {
//Ya pasó la etapa de verificar campos vacíos
      if(vacio==""){
      cargador.load(pedido);
      }
   } catch (error:Error) {
      lbRespuesta.text= "Error en el envío, intente más tarde";
   }

Por CRD

80 de clabLevel



Genero:Masculino  

Diseño Filete Ilustración

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.