//cette classe permet de lier un champ select a un autre var SubSelect=Class.create(); SubSelect.prototype={ /** * @param idsel1: le select a utiliser en lien * @param idsel2 : le select a modifier * @param lienDonnees l'url a appeller * @param select : la valeur par defaut du select //suppose que la valeur nulle soit 0 * @param options * func : function js appelee pour rajouter si besoin des arguments a l'url par exemple * arg le nom de l'argument qui sera passť au controlleur * table : le nom du tableau jsonisť * */ initialize:function(idsel1,idsel2,lienDonnees,select,options){ this.idsel=idsel1; this.idsel2=idsel2; this.Ob1=$(idsel1); this.Ob2=$(idsel2); try{ this.options = { arg: 'arg', table: 'result', func:'null', field:'libelle', value:'valeur' }.extend(options || {}) ; }catch(e){ this.options = { arg: 'arg', table: 'result', func:'null', field:'libelle', value:'valeur' }; } this.lienDonnees=lienDonnees; this.select=select; this.Ob1.onchange= this.lanceFiltre.bindAsEventListener(this); this.Ob2.onchange= this.upVal.bindAsEventListener(this); /* if(this.select&&this.select!=''){ new_option = new Option(this.select,this.select); this.Ob2.options[this.Ob2.length]=new_option; this.Ob2.options[this.Ob2.length-1].selected = true; } */ //ajaxEngine.registerRequest( 'filtre'+idsel1, lienDonnees); //ajaxEngine.registerAjaxObject( IdData,this ); this.lanceFiltre(); }, upVal:function(evt){ this.select=$F(this.idsel2); }, lanceFiltre:function (evt){ valeur=$F(this.idsel); pars=this.options.arg+'='+valeur; var uri=this.lienDonnees+'&'+this.options.arg+'='+valeur; if(this.options.func!='null'){ uri+=this.options.func.apply(window,[]); } // alert (uri); if(valeur!='0'&&valeur!=''){ //alert('valeur vaux'+valeur+'|'); var myAjax5 = new Ajax.Request( uri, { method : "post", parameters : pars, asynchronous : true,evalScripts:true, onComplete:this.ajaxUpdate.bind(this),objetLie:this}); //ajaxEngine.sendRequest('filtre'+this.idsel,"args="+valeur,"idretour="+this.IdData); }else{ //alert('je cache'+this.idsel2); Element.hide(this.idsel2); if($('pmulti'+this.idsel2)) { Element.hide('pmulti'+this.idsel2); } } }, ajaxUpdate:function(ajaxResponse){ //alert(ajaxResponse.responseText); eval('var res='+ajaxResponse.responseText); res=res[this.options.table]; Element.show(this.idsel2); if($('pmulti'+this.idsel2)) { Element.show('pmulti'+this.idsel2); } max=res.length; // remise a 0 du tableau d lo=this.Ob2.length; for (i=lo; i>=0; i--) { this.Ob2.options[i]=null; } this.Ob2.options[0]= new Option('',''); for(i=0;i