Проблема с формой обратной связи - PullRequest
0 голосов
/ 18 марта 2009

Во Flash (AS3) я создаю контактную форму, в которой я взял одну кнопку «Отправить», одну кнопку «Сброс», четыре поля ввода текста «Имя, электронная почта, тема, сообщение» с именами экземпляров «contact_name, contact_email, contact_subject, contact_message»

Меня очень смущают setFocus и killFocus.

В AS3 я дал

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

Теперь, когда я публикую этот файл, по умолчанию поле ввода текста отображается с текстом «Имя, Email, Sub, Сообщение»

Теперь мое требование - если я нажму на поле имени, чтобы текст «Имя» исчез, чтобы я мог ввести свое имя, после этого я нажимаю на поле электронной почты. текст «Электронная почта» должен исчезнуть одновременно с тем, что я не хочу потерять свое имя, которое вводится в поле имени.

Если я нажму в текстовом поле «Тема», текст «Sub» должен исчезнуть, но не потерять введенные мной данные имени и электронной почты.

Если я щелкну в поле «Текст сообщения», текст «Сообщение» должен исчезнуть, но я не хочу потерять данные, которые были введены в оставшиеся текстовые поля.

Пожалуйста, смотрите скрипт действия ниже. Пожалуйста, помогите мне найти решение.

Сценарий действия:

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|[_.\-])+@((\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);
}
}

Спасибо --Вамси

Ответы [ 2 ]

0 голосов
/ 08 августа 2009

Я бы использовал событие focusIn вместо click, так как табуляция через ваши текстовые поля не опустошит их ... Кроме того, когда вы фокусируете текстовое поле, оставляя его пустым, оно должно заполняться текстом метки ...

var defaultText="Name";
addEventListener(FocusEvent.FOCUS_IN, function() {
   if(text==defaultText) {
      text="";
   }
}
addEventListener(FocusEvent.FOCUS_OUT, function() {
   if(text=="") {
      text=defaultText;
   }
}
0 голосов
/ 18 марта 2009

Предполагая, что contact_name является Button, вы можете добавить прослушиватель событий, который сбрасывает свойство text, когда пользователь нажимает на это поле. Что-то вроде:

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