Comunidad de diseño web y desarrollo en internet online

Problema formulario contacto

Citar            
MensajeEscrito el 13 Feb 2013 02:21 pm
Buenos días tengo la siguiente programación en mi formulario de contacto:

Código ActionScript :

sujet_txt.onChanged = mail_txt.onChanged = nomprenom_txt.onChanged = message_txt.onChanged=function () {
   error_btn.info_txt.text = "";
};

function effacer() {
   sujet_txt.text = "TELÉFONO";
   mail_txt.text = "E-CORREO";
   nomprenom_txt.text = "NOMBRE";
   message_txt.text = "MENSAJE";
}
function effacer_al() {
   sujet_txt.text = "TELEFON";
   mail_txt.text = "E-POST";
   nomprenom_txt.text = "NOMEN";
   message_txt.text = "MELDUNG";
}
function effacer_fr() {
   sujet_txt.text = "TÉLÉPHONE";
   mail_txt.text = "E-COURRIER";
   nomprenom_txt.text = "NOM";
   message_txt.text = "MESSAGE";
}
function effacer_en() {
   sujet_txt.text = "PHONE";
   mail_txt.text = "E-MAIL";
   nomprenom_txt.text = "NAME";
   message_txt.text = "DISPATCH";
}
function effacer_it() {
   sujet_txt.text = "TELEFONO";
   mail_txt.text = "E-POSTA";
   nomprenom_txt.text = "NOME";
   message_txt.text = "MESSAGGIO";
}

_parent.envoi_btn.onPress = function() {
   pressBtnForm.start();
   var envoi = new LoadVars();
   if ((sujet_txt.text == "TELÉFONO") or (mail_txt.text == "E-CORREO") or (nomprenom_txt.text == "NOMBRE") or (message_txt.text == "MENSAJE")) {
      error("Es obligatorio rellenar todos los campos. Pulsa aquí para seguir con el formulario de contacto. Gracias.");
   } else if ((sujet_txt.text == "TELEFON") or (mail_txt.text == "E-POST") or (nomprenom_txt.text == "NOMEN") or (message_txt.text == "MELDUNG")) {
      error("Bitte füllen Sie alle Felder aus. Klicken Sie hier um das Kontakt-Formular gehen. Danke.");
   } else if ((sujet_txt.text == "TÉLÉPHONE") or (mail_txt.text == "E-COURRIER") or (nomprenom_txt.text == "NOM") or (message_txt.text == "MESSAGE")) {
      error("S'il vous plaît remplir tous les champs. Cliquez ici pour accéder au formulaire de contact. Merci.");
   } else if ((sujet_txt.text == "PHONE") or (mail_txt.text == "E-MAIL") or (nomprenom_txt.text == "NAME") or (message_txt.text == "DISPATCH")) {
      error("Please fill in all fields. Click to go to the contact form. Thank you.");
   } else if ((sujet_txt.text == "TELEFONO") or (mail_txt.text == "E-POSTA") or (nomprenom_txt.text == "NOME") or (message_txt.text == "MESSAGGIO")) {
      error("Si prega di compilare tutti i campi. Clicca per andare al modulo di contatto. Grazie.");
   } else {
      if (_root.mvMenu.mbEspañol.enabled.false = _root.idioma2 == "es"(sujet_txt.text)) {
         effacer();
         error("Su mensaje ha sido enviado con éxito. Nos pondremos en contacto con usted lo antes posible. Gracias. Pulsa aquí para mandar otro mensaje.");
         }if ((_root.mvMenu.mbAleman.enabled.false = _root.idioma2 == "al") and (sujet_txt.text)) {
            effacer_al();
            error("Ihre Nachricht wurde gesendet. Wir werden Sie in Kürze kontaktieren. Danke. Klicken Sie hier um ein anderes zu senden.");
            }if ((_root.mvMenu.mbFrances.enabled.false = _root.idioma2 =="fr") and (sujet_txt.text)) {
               effacer_fr();
               error("Votre message a été envoyé. Nous vous contacterons sous peu. Merci. Cliquez ici pour envoyer un autre message.");
               }if ((_root.mvMenu.mbIngles.enabled.false = _root.idioma2 == "en") and (sujet_txt.text)) {
                  effacer_en();
                  error("Your message has been sent. We will contact you shortly. Thank you. Click here to send another message.");
                  }if ((_root.mvMenu.mbItaliano.enabled.false = _root.idioma2 =="it") and (sujet_txt.text)) {
                     effacer_it();
                     error("Il tuo messaggio è stato inviato. Vi contatteremo a breve. Grazie. Clicca qui per inviare un altro messaggio.");
                  }
      envoi.sujet = sujet_txt.text;
      envoi.nomprenom = nomprenom_txt.text;
      envoi.mail = mail_txt.text;
      envoi.msg = message_txt.text;
      envoi.sendAndLoad("mail.php", envoi, "POST");
   }
};

_parent.effacer_btn.onPress=function(){
   pressBtnForm.start();
   effacer()
   effacer_al()
   effacer_fr()
   effacer_en()
   effacer_it()
}

El problema que me surge con esta programación es que al presionar el botón de cambio de idioma para
que la página de contacto me cambio al idioma elegido, la primera vez que se presiona el botón "ENVIAR" me sale el mensaje "Su mensaje ha sido enviado con éxito. ..." sin haber introducido ningún dato en el campo de texto. Esto sucede por la función effacer que es la que pone el texto con la palabra en el idioma elegido y al presionar el botón "ENVIAR" ya considera que hay datos introducidos, pero realmente los datos son los campos de texto con la palabra "TELÉFONO" "NOMBRE" ect.
Cómo se podría cambiar la programación para que los campos de texto con las palabras "TELÉFONO" etc no los tome como introducción de datos.
Gracias. Un cordial saludo.

Por Stephane_Kelian

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Feb 2013 10:09 am
Es un buen ejemplo de lo que se llama programación spaguetti, es decir una acumulación de if en cascada, ya que prueba caso por caso y en forma lineal todas las condiciones. En este punto se hace un poco inmanejable. Hay una parte de lógica que no entiendo, al darle al botón pasas por todos los idiomas uno detrás de otro, eso no tiene mucho sentido.
Te diría que uses campos de texto (no de introducción de texto) solamente para las etiquetas de los campos así te ahorras chequear si lo que hay es una etiqueta, multiplicado por los 5 idiomas que tienes

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Feb 2013 06:32 pm
Hola Jorge,
muchas gracias por contestar. Tienes toda la razón en tu comentario. No he hecho los campos de texto dinámicos con el contenido de los idiomas pues me gusta que al poner el cursor sobre el texto este desaparezca al introducir los datos. Si no consigo la solución lo haré como tu has explicado.

¿Hay alguna manera de decirle al campo de introducción de texto, que el texto con la palabra en su respectivo idioma no lo tome como un texto introducido al cambiar el idioma?

Muchas gracias Jorge

Por Stephane_Kelian

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Feb 2013 08:35 pm
Si, la cascada de if que tienes apunta a eso, pero es medio inmanejable. Tip: si haces un array (hashmap o dictionary) de objetos con las palabras en cada idioma, puedes usar un solo if por campo en base a una variable gral lang
Idea:

Código ActionScript :

var diccionario:Object = {tel:{es:"telefono", en:"telephone", al:"telefon"}, email:{......}}
var lang = "en"
if (sujet_txt.text == diccionario.tel[lang]) or (mail_txt.text ==diccionario.email[lang])


En base a esa idea, haces una sola cadena de if y entonces si podemos buscar errores sin volvernos locos

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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