Problème onblur sur inputbox [Résolu]

cs_funseb 154 Messages postés dimanche 29 juin 2003Date d'inscription 28 janvier 2010 Dernière intervention - 5 mars 2008 à 15:57 - Dernière réponse : cs_funseb 154 Messages postés dimanche 29 juin 2003Date d'inscription 28 janvier 2010 Dernière intervention
- 5 mars 2008 à 16:48
Bonjour,


J'ai un énorme problème en javascript, je cherche depuis déjà pas mal de temps et impossible de trouver une solution. Voila mon problème : j'ai un datagrid (aspx). Je prend le cas où j'ai 2 colonnes. Donc en javascript, j'ajoute une ligne à mon datagrid dès le chargement de la page (pour ma ligne , je crée donc des cellules et met dans chaque cellule une textbox), ceci en passant en paramètre pour chaque cellule, la largeur, le nombre de caractère max et le type de la textbox présent dans chaque cellule (numérique, alpha ...). Donc en gros j'ai une boucle qui va de 0 à n colonnes. et j'ai l'information du type de la colonne dans un array par exemple [0,2] , la 1 ere colonne à 0 soit type alpha, la seconde colonne à 2 = type numérique....

Donc mon code est le suivant :



for
(i=0;i<nbcol;i++)



{



   var
cell = row.insertCell(i);                  //Ajout de la cellule dans la ligne



  var reg new RegExp("[*]+","g");   //récupération des valeurs de longueur pour les cellule (recu de cette facon 200*100*10 pour dire       Largeur          col 1 200, largeur col 2 = 100 ...



   var
tab = TabLongueur.split(reg);  




   if
(tab[i] != '0')                                  //si la valeur != de 0 soit on a défini une largeur spécifique



   {



      var
Calcul = tab[i];



   }



   else



   {







      var
Calcul = (500 - 30)/ (nbcol);   }

   cell.width = Math.round(Calcul);


   var
el document.createElement('input');            //dans chaque cellule du datagrid , il y a une textbox   el.type 'text';

   el.width = Math.round(Calcul);

   el.height = 20;



   tab = TabCaractere.split(reg);                           //meme principe que la longueur de la cellule mais cette fois pour récuperer nb caracteres max de la textbox







   if
(tab[i] != '0')   {


      var
intNb tab[i];      el.maxLength intNb;

   }


   var
reg2 =

new
RegExp("[*]+","g");


   var
tab2 = param.split(reg2);

   valligne = MiseEnForme(iteration);

   valcol = MiseEnForme(i);

   el.name = 'txtRow' + valligne + valcol;

   el.id = 'txtRow' + valligne + valcol;


   










el.onblur =
function(){GestionType(this


, tab2[i]);};    // ET C'EST LA QUE CA MARCHE PAS !!!!!!!!!!!!!!!!!


Donc en gros, j'aurais voulu pour chaque cellule, lui attacher l'événement onblur avec les bons paramètres au niveau du type autorisé ! par exemple pour la 1 ere cellule tab2[0] = 2 soit du numérique donc je verifie avec GestionType(this, 2) .... Or, ca n'attache pas l'évenement à chaque tour de boucle ! si j'ai 4 colonnes, et bien le onblur sur toutes les textbox de la ligne va prendre pour valeur tab2[5]. idem si je fais un alert(i) dans mon onblur, pour toutes les cellules de ma ligne il va m'afficher 5 (dans le cas ou j'ai 4 colonnes ....)






cell.appendChild(el);



}



}








Voila donc mon problème. Desolé si mon explication est pas super, c'est pas évident ... cela dit si quelqu'un a deja eu ce problème j'imagine qu'il pourra m'aiguiller.

Merci d'avance pour toute idée

Séb
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 5 mars 2008 à 16:44
3
Merci
>>ça ne marche pas , ça fait la même chose ...
    tu as juste oublié l'essentiel

       txt.toto=i;
     
txt.onblur =  function() { GestionType (
et il faut utiliser ici
this.toto );  };

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]

Merci cs_bultez 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de cs_bultez
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 5 mars 2008 à 16:05
0
Merci
Bonjour,

    on en avait parlé il y a quelques temps, et petoleteam nous avait résolu ça....

    plus le lien, mais j'ai noté !

<html>
   
        <form name= "frm">
           
           
           
        </form>
        <script type="text/javascript">
            for( var n=0; n<document.frm.t.length; n++)
            {    var Obj = document.frm.t[n];
                 Obj.numChp = n;
                 Obj.onmouseover =function ()  
                 { alert ( this.numChp ); }
            }
        </script>
   
</html>

bon c'est sur onmouseover, y'a que les input texte....    mais tu saura transposer   ;o)
    " le truc " c'est de passer par    var Obj = l'input en question[n];

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
cs_funseb 154 Messages postés dimanche 29 juin 2003Date d'inscription 28 janvier 2010 Dernière intervention - 5 mars 2008 à 16:34
0
Merci
Salut,

même en faisant ça après être sorti de la boucle décrite dans mon premier message :

function

AddTypeColonne(ligne, nbcol, param){

valligne = MiseEnForme(ligne);

var reg =
new RegExp("[*]+","g");

var tab = param.split(reg);

for (i=0;i<nbcol-1;i++){

valcol = MiseEnForme(i);

nom = 'txtRow' + valligne + valcol;
var txt document.getElementById(nom);txt.onblur

function(){GestionType(
this, tab[i]);};}

}

Ca ne marche pas , ça fait la même chose ...
Commenter la réponse de cs_funseb
cs_funseb 154 Messages postés dimanche 29 juin 2003Date d'inscription 28 janvier 2010 Dernière intervention - 5 mars 2008 à 16:48
0
Merci
Oooooohhhhhhhhhhhhhhhhhhhh la vache !!!!!!!!!! c'est trop bien !!!! lol
MERCI mille fois !!!!!!
seb
Commenter la réponse de cs_funseb

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.