Partage
  • Partager sur Facebook
  • Partager sur Twitter

[jQuery] Entrainement à l'écriture d'un plugin simple

exécuter une fonction d'un plugin / sélectionner un élément

Sujet résolu
    2 novembre 2010 à 12:25:28

    Bonjour,

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


    $(document).ready(function() {
    	$('.form1').jform({
    		tag:		'input',
    		id: 		1,
    		name:		'test',
    		size:		12,
    		value:		'lu',
    		disabled:	false
    	});
    	$('.form1').jform({
    		tag:		'select',
    		id: 		1,
    		name:		'test',
    		options:
    				[{
    					1: 'oui',
    					2: 'non'
    				}],
    		disabled:	true
    	});
    });
    


    Merci beaucoup. ;)
    • Partager sur Facebook
    • Partager sur Twitter
      2 novembre 2010 à 13:00:29

      var $i = $('<'+params.tag+' />'); // création
      
      $t.prepend($i); // ajout de l'élément
      

      ?
      • Partager sur Facebook
      • Partager sur Twitter
        2 novembre 2010 à 13:34:51

        Merci cela répond à ma deuxième question.

        Pour ma première question j'ai fait passer un paramètre classique, je crois que j'avais cherché compliqué.

        J'ai mis à jour mon premier post.
        • Partager sur Facebook
        • Partager sur Twitter
          2 novembre 2010 à 14:27:17

          Donc le problème est résolu ?
          • Partager sur Facebook
          • Partager sur Twitter

          [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.
          • Editeur
          • Markdown