2009-03-18 7 views
0

En Flash (AS3) Iam créer un formulaire de contact en ce que j'ai pris un "bouton Envoyer", un "bouton de réinitialisation", quatre champs de texte de saisie "Nom, Email, Sujet, Message" avec les noms d'instance "contact_name, contact_email, contact_subject, contact_message"Problème avec le formulaire de contact Flash

Je suis très confus à propos de setFocus et de killFocus.

En AS3, j'ai donné

contact_name.text = "Name"; 
contact_email.text= "Email"; 
contact_subject.text = "Sub"; 
contact_message.text = "Message"; 

Maintenant, quand je publie ce fichier, bydefault le champ de saisie de texte affiche avec le texte "Nom, E-mail, Sub, un message"

Maintenant, mon exigence est si je clique sur le champ de nom ainsi le texte "nom" devrait disparaître pour que je puisse entrer mon nom, après que je clique sur le champ d'email le texte "email" devrait disparaître en même temps je ne veux pas perdre mon nom qui est entré dans le champ de nom.

Si je clique dans la zone de texte Objet, le texte "Sub" devrait disparaître mais ne pas perdre les données de nom et de courriel entrées par moi.

Si je clique dans le champ Texte du message, le texte "Message" devrait disparaître mais je ne veux pas perdre les données qui ont été entrées dans les champs de texte restants.

Veuillez voir le script d'action ci-dessous. S'il vous plaît aidez-moi à trouver la solution.

Action Script:

contact_name.text ="Name"; 
contact_email.text ="Email"; 
contact_subject.text = "Sub"; 
contact_message.text ="Message"; 
message_status.text = ""; 

send_button.addEventListener(MouseEvent.CLICK, submit); 
reset_button.addEventListener(MouseEvent.CLICK, reset); 

var timer:Timer; 
var var_load:URLLoader = new URLLoader; 
var URL_request:URLRequest = new URLRequest("send_email.php"); 
URL_request.method = URLRequestMethod.POST; 

function submit(e:MouseEvent):void 
{ 
if(contact_name.text == "Name" || contact_email.text == "Email" || 
    contact_subject.text == "Sub" || contact_message.text == "Message") 
{ 
    message_status.text = "Please fill up all text fields."; 
} 
else if(!validate_email(contact_email.text)) 
{ 
    message_status.text = "Please enter the valid email address."; 
} 
else 
{ 
    message_status.text = "sending..."; 

    var email_data:String = "name=" + contact_name.text 
        + "&email=" + contact_email.text 
        + "&subject=" + contact_subject.text 
        + "&message=" + contact_message.text; 

    var URL_vars:URLVariables = new URLVariables(email_data); 
    URL_vars.dataFormat = URLLoaderDataFormat.TEXT; 

    URL_request.data = URL_vars; 
    var_load.load(URL_request); 
    var_load.addEventListener(Event.COMPLETE, receive_response); 
} 
} 

function reset(e:MouseEvent):void 
{ 
contact_name.text ="Name"; 
    contact_email.text ="Email"; 
    contact_subject.text = "Sub"; 
    contact_message.text ="Message"; 
    message_status.text = ""; 
} 

function validate_email(s:String):Boolean 
{ 
var p:RegExp = /(\w|[_.\-])[email protected]((\w|-)+\.)+\w{2,4}+/; 
var r:Object = p.exec(s); 
if(r == null) 
{ 
    return false; 
} 
return true; 
} 

function receive_response(e:Event):void 
{ 
var loader:URLLoader = URLLoader(e.target); 
    var email_status = new URLVariables(loader.data).success; 

if(email_status == "yes") 
{ 
    message_status.text = "Success! Your message was sent."; 
    timer = new Timer(500); 
    timer.addEventListener(TimerEvent.TIMER, on_timer); 
    timer.start(); 
} 
else 
{ 
    message_status.text = "Failed! Your message cannot sent."; 
} 
} 

function on_timer(te:TimerEvent):void 
{ 
if(timer.currentCount >= 10) 
{ 
    contact_name.text = contact_email.text = contact_subject.text = 
    contact_message.text = message_status.text = ""; 
    timer.removeEventListener(TimerEvent.TIMER, on_timer); 
} 
} 

Merci --vamsi

Répondre

0

En supposant que votre contact_name est un Button vous pouvez ajouter un écouteur d'événement qui remet à zéro la text propriété lorsqu'un utilisateur clique sur ce terrain. Quelque chose comme:

contact_name.addEventListener(
      MouseEvent.CLICK, 
      function(e:Event):void { 
       contact_name.text = ''; 
      } 
); 
0

Je voudrais utiliser l'événement focusIn au lieu de clic, car à travers vos textfields tabulant ne les vider ... Aussi, lorsque vous focusOut de la textfield laissant vide, il doit remplir avec son texte d'étiquette ...

var defaultText="Name"; 
addEventListener(FocusEvent.FOCUS_IN, function() { 
    if(text==defaultText) { 
     text=""; 
    } 
} 
addEventListener(FocusEvent.FOCUS_OUT, function() { 
    if(text=="") { 
     text=defaultText; 
    } 
} 
Questions connexes