Je m'intéresse au développement de plugin jQuery. J'affronte quelques difficultés. L'idée du plugin est simple : il permet la création d'éléments de formulaire.
J'ai plusieurs questions. J'ai remarqué qu'il n'était pas possible de modifier dynamiquement le type d'un input (le DOM l'interdit). Alors j'aimerais lors de l'appel du plugin avoir un paramètre qui indique quel type de balise on souhaite (input, select...).
Et en fonction de cette valeur on exécute la fonction appropriée qui est dans le plugin. A ce niveau je suis bloqué donc là je travaille seulement un élément input.
J'en viens à ma deuxième question. Je crée un élément input à l'aide de prepend(). Seulement je ne sais pas comment le sélectionner juste après. J'ai fait un $(':input') ça fonctionne si il n'y en a qu'un seul...
Le code ressemble à ça :
(function($) {
$.fn.jform = function(params) {
p = $.extend({ tag: 'input' }, params);
var $t = $(this); // on sélectionne le form
// choix de la fonction à exécuter
switch(p.tag) {
case 'input': input($t);
break;
case 'select': select($t);
break;
}
// éléments INPUT
function input($t) {
var $i = $('<'+p.tag+' />'); // création
$t.prepend($i); // ajout de l'élément
$i.attr('id', p.id);
$i.attr('name', p.name);
$i.attr('size', p.size);
$i.attr('value', p.value);
(p.disabled == true) ? $i.attr('disabled', 'disabled') : $i.removeAttr('disabled');
}
// éléments SELECT
function select($t) {
var $i = $('<'+p.tag+'></select>'); // création
$t.prepend($i); // ajout de l'élément
$i.attr('id', p.id);
$i.attr('name', p.name);
(p.disabled == true) ? $i.attr('disabled', 'disabled') : $i.removeAttr('disabled');
var json = p.options;
for(var i=0;i<json.length;i++) {
var obj = json[i];
for(var key in obj){
var $x = $('<option>'+obj[key]+'</option>');
$i.prepend($x);
$x.attr('value', key);
}
}
}
};
})(jQuery);
[jQuery] Entrainement à l'écriture d'un plugin simple
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.