Formulaire facile, formulaire rapide.

Soyons fous, histoire de prendre de bonnes habitudes, voici une petite classe qui peut s’averer très pratique dans le cas de formulaire simple et rapide à mettre en place.

import ..Relegate;
import mx.events.EventDispatcher;
 
class utils.Formulaire {

	private var _sAction:String;
	private var _sMethod:String;

	public var dispatchEvent:Function;
 	public var addEventListener:Function;
 	public var removeEventListener:Function;

 	public var onReceive:Function;
 	public var onSend:Function;

	private var _aInput:Array;

	private var _nIndex:Number;

	function Formulaire(pAction:String, pMethod:String)  {
		_aInput = [];
		_nIndex = 0;
		_sAction = pAction;
		_sMethod = pMethod;
		EventDispatcher.initialize(this);
 		addEventListener("onReceive", this);
 		addEventListener("onSend", this);
	}

	public function addInput(pName:String, pText:TextField):Void {
		var oInput:Object = new Object();
		oInput.name = pName;
		oInput.txt = pText;
		pText.tabIndex = _nIndex;
		_nIndex++;
		pText.onSetFocus = Relegate.create(this, _onSetFocus, pText, pText.text);
		pText.onKillFocus = Relegate.create(this, _onKillFocus, pText, pText.text);
		_aInput.push(oInput);
	}

	private function _onSetFocus(pObject:Object, pText:TextField, pValue:String):Void {
		if(pText.text == pValue) {
			pText.text = "";
		}
	}

	private function _onKillFocus(pObject:Object, pText:TextField, pValue:String):Void {
		if(pText.text == "") {
			pText.text = pValue;
		}
	}

	public function send():Void {
		var lvSend = new LoadVars();
		var lvLoad = new LoadVars();
		var nInput:Number = _aInput.length;
		for(var i:Number=0; i<nInput; i++) {
			lvSend[_aInput[i].value] = _aInput[i].txt.text;
		}
		lvLoad.ignoreWhite = true;
		dispatchEvent({type: "onSend", target: this});
		lvLoad.onLoad = Relegate.create(this, _onLvLoad, lvLoad);
		lvSend.sendAndLoad(_sAction, lvLoad, _sMethod);
	}

	private function _onLvLoad(pSuccess:Boolean):Void {
		dispatchEvent({type: "onReceive", target: this, success:pSuccess});
	}

}

Download this code: Formulaire.as

Utilisation :

var form:Formulaire;
 
sendForm = function () {
	form.send();
	form.onSend = Delegate.create(this, onSend);
	form.onReceive = Delegate.create(this, onReceive);
}
 
onSend = function(pEvent:Object):Void {
	trace("envoi en cours &gt; "+pEvent);
}
 
onReceive = function(pEvent:Object):Void {
	trace("envoi terminé &gt; "+pEvent.success);
}
 
form = new Formulaire("/scripts/sendMail.php", "POST");
form.addInput("nom", txtNom);
form.addInput("mail", txtMail);
form.addInput("message", txtMessage);
btnEnvoyer.onRelease = Delegate.create(this, sendForm);

Download this code: ExempleFormulaire.as

4 Responses to “Formulaire facile, formulaire rapide.”

  1. Yog Says:

    Cool, c’est exactement ce que je cherchais.

  2. Pulp Says:

    Bonjour,

    exusez moi, mais je ne comprend pas trop cette ligne :

    “import ..Relegate;”

    De plus, ça me genere une erreur.
    J’ai essayé de modifier par :
    “import mx.utils.Relegate;”

    mais rien de plus…

    Si vous pouviez m’eclaircir un peu ça serait sympa :)

  3. manu Says:

    Tu peux remplacer par import net.tekool.utils.Relegate;

    et télécharger une classe Relegate sur le site Tekool.net : http://www.tekool.net/flash/class/relegate/

  4. fred Says:

    Bonjour,

    Je ne vois pas ta classe ?

    Merci

Leave a Reply