death83
Messages postés10Date d'inscriptionmercredi 25 janvier 2006StatutMembreDernière intervention25 septembre 2006
-
21 sept. 2006 à 22:44
death83
Messages postés10Date d'inscriptionmercredi 25 janvier 2006StatutMembreDernière intervention25 septembre 2006
-
25 sept. 2006 à 22:58
Salut a tous,
je suis entrain de faire un petit script qui fonctionne bien sauf sur IE.
J'ai une fonction qui permet la génération automatique d'un texte à partir de 2 input.
Un petit exemple concret pour comprendre:
input 1: Fonction
input 2: Nom
J'obtient un code généré:
Fonction : Nom
jusque la ca va
si on entre ensuite
input 1: Fonction2
input 2: Nom2
j'obtient alors:
Fonction : Nom
Fonction2 : Nom2
Le problème viens lorsque la meme fonction reviens une seconde fois par exemple:
input 1: Fonction
input 2: Nom3
Sous FF, Opéra et Netscape j'obtient: (ce que je veut)
Fonction : Nom / Nom3
Fonction2: Nom2
mais sous IE j'ai ca:
Fonction : Nom
/ Nom3
Fonction2: Nom2
Voilà le code concerné:
function ajouteintextarea(idtextarea,element1,element2)
{
//On récupert le text du textarea
var text=document.getElementById(idtextarea).value;
//On ahoute le nouveau perso
var fonction=document.getElementById(element1).value;
var perso=document.getElementById(element2).value;
reg=new RegExp(fonction+" :","gi"); //Pour mozilla firefox
test=text.match(reg);
alert(test);
if(test!=null)
{
alert('pwet');
reg=new RegExp(test+" (.*)","gi");
var textainser=text.replace(reg,test+" $1 / "+perso);
document.getElementById(idtextarea).value=textainser;
}
else
{
if(text=='')
{
var textainser=fonction+" : "+perso;
document.getElementById(idtextarea).value=textainser;
}
else
{
var textainser=text+"\n"+fonction+" : "+perso;
document.getElementById(idtextarea).value=textainser;
}
}
}
ou element1 correspond a input 1 et element 2 a input2.
Savez vous comment je pourrais corriger ce problème sous IE? Apparement c'est à cause du \n, mais si je l'enlève ca ne marche plus.
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201116 25 sept. 2006 à 12:57
C'est vraiment plus simple avec les RegExp
Tu ajoutes...
var reg = new RegExp("[\r]","gi");
text =text.replace( regexp, '');
Avant...
reg =new RegExp(fonction+" :","gi"); //Pour mozilla firefox
test=text.match(reg);
dans ta source et cela doit être bon...
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201116 22 sept. 2006 à 15:26
B onjour...
Je réponds indirectement à ton problème en te donnant le lien d'une source déposée il y a peu sur ce site
CURSEUR dans TEXTAREA Je sais elle est de moi mais bon, il n'empêche que tu devrais y trouver ta vie
;0)
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201116 25 sept. 2006 à 12:32
B
onjour...
les RegExp ne sont nullement en cause mais plutôt la façon différente qu'on les navigateurs de gérer les retours chariot dans les TEXTAREA...
donc après essais et tests sur FireFox et IE ce qui suit devrait te convenir...
function Add(idtextarea,element1,element2){
var szTxt = "";
var Obj = document.getElementById(idtextarea);
//On récup. le text du textarea
var szTxt = Obj.value;
//On ajoute le nouveau perso
var fonction=document.getElementById(element1).value;
var perso=document.getElementById(element2).value;
reg = new RegExp( fonction+" :","gi");
Test = szTxt.match( reg);
//-- Existe Déjà --//
if( Test!=null){
var Pos;
//-- Récup chaque Ligne --//
var szTmp = new Array();
szTmp = szTxt.split('\n');
//-- Formattage des Lignes --//
for( i =0 ; i < szTmp.length; i++){
//-- Suppression des retour chariot --//
Pos = szTmp[i].indexOf('\r');
if( Pos > -1)
szTmp[i]=szTmp[i].substring( 0, Pos);
//-- Test Si ligne concernée --//
if( szTmp[i].match( reg) !=null)
szTmp[i] += " / "+perso; // On ajoute
}
//-- Rétabli le texte en sortie --//
szTxt = "";
for( i =0 ; i < szTmp.length-1; i++)
szTxt += szTmp[i] +'\n';
//-- Dernière sans saut de ligne --//
szTxt += szTmp[i];
}
else{
if( szTxt =='')
szTxt = fonction+" : "+perso;
else
szTxt += "\n" + fonction+" : "+perso;
}
//-- Ecriture dans Textarea --//
Obj.value = szTxt;
}
Voila je pense qu'il y à moyen de faire plus simple avec les RegExp en remplaçant tous les retours chariot d'une traite dans le texte récupéré et en appliquant ton code Mais je te laisse joué...
;0)
Vous n’avez pas trouvé la réponse que vous recherchez ?