Bonjour à tous,
Je viens vers vous car je me lance dans la création de plugin perso, et à peine commencer voilà que je tombe sur un problème, voici mon problème :
J'ai une variable contenant le nom d'une fonction(méthode) de mon plugin, mais impossible de l'appeler ou de l'exécuté, voici le bout de code (très simplifier mais qui ne fonctionne pas)
javascript / jquery
HTML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 (function($){ // définition du plugin jQuery $.fn.checkin = function() { // retourne true si vide, sinon false function isEmpty(v){ return (v == "" || v == null || v == false) ? true : false; } var action = "isEmpty"; $(this).bind('blur', function(){ // alert(action); => OK (affiche bien isEmpty) // alert(isEmpty($(this).val())); => OK (retourne true ou false); alert($(this)[action]($(this).val())); }); }; })(jQuery); $("#inputTest").checkin();
Comme vous le voyez le code est très simpliste, et pourtant je suis pas foutu le faire fonctionner.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <input type="text" name="inputTest" id="inputTest" />
après un multitude de recherche, j'ai vue que l'on pouvait appeler une fonction depuis un string en la plaçant entre accolade (ce que j'ai fait), j'ai essayer plusieur syntaxe : (avec les erreurs)
On constate que le seul moment ou il me retourne le nom de la fonction dans l'erreur est le dernier, sinon il garde action et non pas isEmpty
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 this[action](""); // this[action] is not a function $(this)[action](""); // $(this)[action] is not a function window[action](""); // window[action] is not a function [action](""); // ["isEmpty"] is not a function
Si j'appel directement la fonction, ça fonctionne, le alert(action) me retourne bien isEmpty
Donc voilà je pense avoir expliquer la chose, si quelqu'un peut m'aider à résoudre ce problème, je l'en remercie d'avance.
PS : ma version jQuery est : jquery-1.6.4
D'avance merci
Partager