plugin perso, appel une méthode par un string
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:
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:
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:
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