Salve a tutti,
Avrei bisogno di un aiuto per aggiungere 1 check box per la Privacy ad un form (AS2 + php) in flash.
Io l’avrei pensato così:
Se l’utente clicca su INVIA FORM e il checbox privacy non è ceccato, non parte la mail ed appare l’avviso: - Errore: Riempite i campi richiesti -
Il clipmovie -Errore: Riempite i campi richiesti - è già presente nel form.fla (istanziato come: errore-invio) e viene richiamato dall’action script se non si compila il campo: messaggio. Vorrei quindi sfruttare per la checkbox lo stesso clip usato per il campo messaggio. Posso dirvi che il codice e il form non è associato al pulsante INVIO ed è in un unico frame e che è modularizzato a funzioni, in modo da poterle riutilizzare singolarmente.
detto questo, il massimo che ho fatto è:
Ho trascinato dalla finestra componenti un check box, l’ho chiamato checkboxprivacy e nei parametri del pannello proprietà ho detto selected = true
Ho impostato poi questo script da inserire nell’action ma mi fermo qui perché ovvio è incompleto
if (checkboxprivacy.value <> false){
trace("se trovi la spunta nel checkbox manda la mail");
}else{
trace("se non trovi la spunta nel checkbox = errore_invio ")
};
ora vi allego lo script originale del form dove ho evidenziato in grassetto la funzione che mi interessa richiamare:
// porto a zero la visibilità degli avvisi
errore_invio._alpha = 0;
errore_server._alpha = 0;
errore_mail._alpha = 0;
notifica_inviato._alpha = 0;
// creo una funzione per il fadeIn/fadeOut degli avvisi
MovieClip.prototype.fadeAlpha = function(to:Number) {
var t:Object = new mx.transitions.Tween(this, "_alpha", mx.transitions.easing.None.easeNone, this._alpha, to, 1, true);
t.path = this;
t.onMotionFinished = function() {
this.path.onFadeDone();
};
};
// creo una funzione che verifica che il campo richiamato sia stato riempito e non contenga spazi vuoti
var validate = function (mail_field:String):Boolean {
var temp = this[mail_field].text.split(" ").join("");
var r:Boolean = (temp.length<=0) ? false : true;
return r;
};
// creo la funzione di verifica per il campo mail
var checkMail:Function = function (target:MovieClip, nameField:String):Boolean {
var temp:String = target[nameField].text;
temp = temp.split(" ").join("");
if (temp.length>0) {
if (temp.lastIndexOf("@")>-1) {
var temp2 = temp.split("@");
if (temp2[1].length>5) {
var temp3 = temp2[1].split(".");
if (temp3[0].length>2 && temp3[1].length>1) {
return (true);
}
return (false);
}
return (false);
}
return (false);
}
return (false);
};
// creo una funzione che viene richiamata al tentativo di invio
var alert_report:Function = function (c:Number) {
switch (c) {
//
// case 0 -> il primo caso viene richiamato se l'invio è avvenuto correttamente
case 0 :
notifica_inviato.onFadeDone = function() {
this.onFadeDone = undefined;
var intv = setInterval(function () {
notifica_inviato.fadeAlpha(0);
clearInterval(intv);
}, 1000);
};
notifica_inviato.fadeAlpha(100);
break;
//
// case 1 -> il secondo caso viene richiamato se i campi obbligatori non sono stati compilati
case 1 :
errore_invio.onFadeDone = function() {
this.onFadeDone = undefined;
var intv = setInterval(function () {
errore_invio.fadeAlpha(0);
clearInterval(intv);
}, 1000);
};
errore_invio.fadeAlpha(100);
break;
//
// case 2 -> il terzo caso viene richiamato se il server non risponde o se la mail non viene inviata correttamente
case 2 :
errore_server.onFadeDone = function() {
this.onFadeDone = undefined;
var intv = setInterval(function () {
errore_server.fadeAlpha(0);
clearInterval(intv);
}, 1000);
};
errore_server.fadeAlpha(100);
break;
case 3 :
errore_mail.onFadeDone = function() {
this.onFadeDone = undefined;
var intv = setInterval(function () {
errore_mail.fadeAlpha(0);
clearInterval(intv);
}, 1000);
};
errore_mail.fadeAlpha(100);
break;
}
};
// creo un array che mi contenga tutti i nomi dei campi di testo che intendo inviare via mail
var campi:Array = new Array("nome", "ditta", "ruolo", "mail", "tel", "messaggio");
// e un altro array che contiene i nomi dei campi obbligatori
var campiObbligatori:Array = new Array("nome", "mail", "messaggio");
// entrambi gli array appena creati devono essere riproposti in php secondo le istruzioni del file PHP
//
// restringo l'immissione di caratteri nel campo mail a quelli necessari
this["mail"].restrict = "^ ";
// attivo il TAB per i campi
for (var i = 0; i<campi.length; i++) {
var l:Number = i+1;
this[campi[i]].tabIndex = l;
}
// attivo l'invio della mail sul pulsante "invia_form"
invia_form.onRelease = function() {
// creo il LoadVars per la comunicazione con il file PHP
var lv_sendMail:LoadVars = new LoadVars();
// avvio un ciclo che mi verifica se i campi obbligatori sono riempiti
// in caso positivo invia i dati al file PHP
// in caso negativo attiva l'alert_report -> case 1
for (var m = 0; m<campi.length; m++) {
if (campiObbligatori.toString().indexOf(campi[m])>=0) {
if (validate(campi[m])) {
if (campi[m] != "mail") {
lv_sendMail[campi[m]] = this._parent[campi[m]].text;
} else {
if (checkMail(this._parent, campi[m])) {
lv_sendMail[campi[m]] = this._parent[campi[m]].text;
} else {
alert_report(3);
break;
}
}
} else {
alert_report(1);
break;
}
} else {
lv_sendMail[campi[m]] = this._parent[campi[m]].text;
}
// alla fine delle verifiche, se è tutto apposto, invio i dati
if (m>=campi.length-1) {
lv_sendMail.sendAndLoad("sendmail.php", lv_sendMail, "POST");
}
}
// compilo l'evento onLoad della classe LoadVars che mi verifica se l'invio è andato a buon fine o meno
// nel caso sia stata inviata attiva l'alert_report -> case 0
// altrimenti attiva l'alert_report -> case 2 (errore del server)
lv_sendMail.onLoad = function(ok) {
if (ok) {
if (this.report == "OK") {
alert_report(0);
reset_form.onRelease();
} else {
alert_report(2);
}
} else {
alert_report(2);
}
};
};
// il tasto "reset_form" si occupa di svuotare i campi del form
reset_form.onRelease = function() {
for (var r = 0; r<campi.length; r++) {
this._parent[campi[r]].text = "";
}
};
************************************************** **************
Se potete.. Grazie per l’aiuto..
Daniela