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
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();
HTML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<input type="text" name="inputTest" id="inputTest" />
Comme vous le voyez le code est très simpliste, et pourtant je suis pas foutu le faire fonctionner.

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)
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
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

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