Ceci est une ancienne révision du document !
Phalcon-jquery : JQuery
Principales fonctionnalités de la librairie Phalcon-JQuery (hors JQuery UI et Twitter Bootstrap)
-- Association d'évènements
-- Evénements connus
-- Exemple
Click sur un bouton d'id #btn :
public function clickAction(){
$this->click("#btn","console.log('click sur #btn');");
$this->query->compile($this->view);
}
Vue associée :
<input type="button" value="Test click" id="btn">
{{script_foot}}
-- Utilisation du paramètre event du callback
Le code passé au callback peut utiliser le paramètre event passé par JQuery, et $(this), la cible de l'évènement (target) :
Exemple : appui sur une touche, récupération du code de la touche frappée et de l'id de l'élément ayant généré l'évènement.
public function clickAction(){
$this->jquery->keydown("#btn","console.log('code de touche appuyée :' + event.which + ' sur #' + $(this).attr('id'));");
$this->jquery->compile($this->view);
}
Exemple : affichage/masquage d'un élément sur changement de la valeur d'une checkbox :
public function checkedAction(){
$this->jquery->change("#ck",$this->jquery->toggle("#fs","$(this).checked()"));
$this->jquery->compile($this->view);
}
Vue associée :
<input type="checkbox" id="ck" checked>
<fieldset id="fs">
<legend>Elément à afficher/masquer</legend>
</fieldset>
{{script_foot}}
-- Liste des méthodes JQuery liées aux évènements
| Méthode | Evènement |
|---|---|
| blur(selector,callback) | Sur perte du focus par l'élément désigné par selector |
| change(selector,callback) | Sur changement de valeur d'un input, select ou textarea (déclenché généralement sur perte focus) |
| click(selector,callback) | Sur click de l'élément désigné par selector |
| dblclick(selector,callback) | Sur double-click de l'élément désigné par selector |
| error(selector,callback) | Sur erreur de chargement sur selector |
| focus(selector,callback) | Sur réception du focus par l'élément désigné par selector |
| hover(selector,callback) | Sur déplacement de la souris au dessus de l'élément désigné par selector |
| keydown(selector,callback) | Sur touche clavier enfoncée lorsque l'élément désigné par selector a le focus |
| keypress(selector,callback) | Sur touche clavier enfoncée lorsque l'élément désigné par selector a le focus |
| keyup(selector,callback) | Sur touche clavier relachée lorsque l'élément désigné par selector a le focus |
| load(selector,callback) | Sur chargement de l'élément désigné par selector |
| mousedown(selector,callback) | Sur bouton souris enfoncé lorsque l'élément désigné par selector |
| mouseout(selector,callback) | Sur sortie de la souris de l“élément désigné par selector |
| mouseover(selector,callback) | Sur passage souris au dessus de l'élément désigné par selector |
| mouseup(selector,callback) | Sur bouton souris relaché lorsque l'élément désigné par selector |
| ready(callback) | Sur chargement du document terminé |
| scroll(selector,callback) | Sur défilement dans/sur l'élément désigné par selector |
| trigger(selector,event) | Déclenche l'évènement event sur l'élément désigné par selector |
| unload(selector,callback) | Sur déchargement de l'élément désigné par selector |
-- Evènements non listés
Pour les évènements inconnus de JQuery ou ne disposant pas de méthode associée dans la librairie phalcon-jquery, on utilise les méthodes :
- execAndBindTo(selector,event,callback) permettant d'exécuter le callback sur le déclenchement de event sur l'élément désigné par selector.
- doJqueryAndBindTo($element,$event,$elementToModify,$jqueryCall,$param="",$function="") permettant d'exécuter la méthode jquery jqueryCall sur elementToModify, en lui passant param sur le déclenchement de event sur l'élément désigné par element.
-- Requêtes Ajax
-- Requêtes immédiates
Il s'agit des requêtes dont l'exécution n'est pas différée (non associée à un évènement par exemple).
Les requêtes immédiates peuvent permettre le chargement d'une page en cascade : élément par élément.
--GET
Exemple : Chargement de exemple/getResponse dans la div #divResponse
public function getAction(){
$this->jquery->get("exemple/getResponse","#divResponse");
echo "<div id='divResponse'>Chargement...</div>";
echo $this->jquery->compile();
}
public function getResponseAction(){
echo "Chargement terminé";
$this->view->disable();
}
-- POST
Exemple : Post de valeurs vers exemple/postResponse dans la div #divPostResponse
public function postAction(){
$this->jquery->post("testsbs/postResponse","#divPostResponse","{nom:'DOE',prenom:'John'}");
echo "<div id='divPostResponse'>Chargement...</div>";
echo $this->jquery->compile();
}
public function postResponseAction(){
var_dump($_POST);
$this->view->disable();
}
-- JSON
Les requêtes JSON permettent d'alimenter en données une vue, à partir d'un retour d'objet JSON par le serveur.
Exemple : Le get JSON vers la page exemple/jsonResponse alimente tous les éléments DOM nom et prenom avec l'élément JSON retourné.
public function jsonAction(){
$this->jquery->json("testsbs/jsonResponse");
echo "<div id='nom'>Chargement...</div>";
echo "<input type='text' id='prenom' value='chargement...'>";
echo $this->jquery->compile();
}
public function jsonResponseAction(){
echo '{"nom":"DOE","prenom":"John"}';
$this->view->disable();
}
-- Association de requêtes à des évènements
Pour faire plus court, les exemples suivants ne comportent pas de vues, et les éléments HTML sont directement produits dans le contrôleur (à éviter…)
-- getAndBindTo
Permet d'associer l'exécution d'un Get à un évènement déclenché sur un élément :
Exemple : Sur click du bouton #btnGet, on veut effectuer un get vers exemple/getResponse, et afficher le résultat dans la div #divResponse.
public function getAction(){
$this->jquery->getAndBindTo("#btn","click","testsbs/getResponse","#divResponse");
echo "<input type='button' id='btn' value='doGet'>";
echo "<div id='divResponse'>En attente de click...</div>";
echo $this->jquery->compile();
}
public function getResponseAction(){
echo "Chargement terminé";
$this->view->disable();
}
-- postFormAndBindTo
Permet d'associer le post d'un formulaire à un évènement déclenché sur un élément :
Exemple : Sur click du bouton #btnPost, on veut poster le formulaire frmLogin vers exemple/postResponse, et afficher le résultat dans la div #divResponse.
public function postResponseAction(){
var_dump($_POST);
$this->view->disable();
}
public function postFormAction(){
$this->jquery->postFormAndBindTo("#btn","click","testsbs/postResponse","frmLogin","#divPostResponse");
echo "<form id='frmLogin' name='frmLogin' onsubmit='return false;'><input type='text' name='login' placeholder='Login...'>
<input type='password' name='password' placeholder='password...'></form>";
echo "<input type='button' id='btnPost' value='doPost'>";
echo "<div id='divPostResponse'>Avant validation</div>";
echo $this->jquery->compile();
}
Il est également possible d'utiliser :
| Méthode | Rôle |
|---|---|
| postAndBindTo(element,event,url[,params,responseElement]) | Post les paramètres params vers url sur l'event produit sur element |
-- Manipulation du DOM
| Méthode | Rôle |
|---|---|
| append(to,element) | ajoute l'élément DOM element à la fin de chaque élément désigné par to |
| prepend(to,element) | ajoute l'élément DOM element au début de chaque élément désigné par to |
| attr(element,attributeName [,value,immediatly]) | Lit/modifie l'attribut attributeName de element |
| html(element[,value,immediatly]) | Lit le contenu html / Affecte value au contenu html de element |
-- Utilitaires
| Méthode | Rôle |
|---|---|
| show(element) | Affiche l'élément DOM element |
| hide(element) | Masque l'élément DOM element |
| toggle(element) | Affiche/masque l'élément DOM element |
| animate(element[,params,speed,extra]) | Effectue une animation sur element |
| addClass(element,class[,immediatly]) | Ajoute la classe class à l'élément DOM element |
| toggleClass(element,class[,immediatly]) | Ajoute/supprime la classe class à l'élément DOM element |