par
sadeq » 12 sept. 2005, 15:08
Si tu ne veux pas utiliser la fonction replace.
Tu utilise les mathématiques :
supposant que ton texte entier est A(1..n) où 1..n est sa longueur.
et que le texte sélectionné est B = A(x..y) où x..y les position début/fin de sélection sachant que 1 <= x <= y <= n
Alors :
A = A(1..x-1) + A(x..y) + A(y+1..n)
où :
A(1..x-1) est le texte avant la sélection
A(y+1..n) est le texte après la sélection
L'algorithme qui te concerne est alors le suivant :
1. récupérer la sélection pour la modifier : B = A(x..y)
2. remplacer la sélection par la modification : nouveau A = A(1..x-1) + B modifié + A(y+1..n)
Le programme JS :
//Récupérer les parties : avant sélection, sélection et après sélection
var AvantB = document.forms['postagenews'].news.value.substring( 0, document.forms['postagenews'].news.selectionStart -1 );
var B = document.forms['postagenews'].news.value.substring( document.forms['postagenews'].news.selectionStart, document.forms['postagenews'].news.selectionEnd );
var ApresB = document.forms['postagenews'].news.value.substring( document.forms['postagenews'].news.selectionEnd +1, document.forms['postagenews'].news.length );
//Modifier la sélection
if(balise=="URL")
{
var URL=prompt("URL=","http://");
B="["+balise+"=\""+URL+"\"]"+B+"[/"+balise+"]";
}
else
{
B="["+balise+"]"+B+"[/"+balise+"]";
}
//Remplacer la sélection
document.forms['postagenews'].news.focus();
document.forms['postagenews'].news.value= AvantB + B + ApresB;
break;
Si tu ne veux pas utiliser la fonction replace.
Tu utilise les mathématiques :
supposant que ton texte entier est A(1..n) où 1..n est sa longueur.
et que le texte sélectionné est B = A(x..y) où x..y les position début/fin de sélection sachant que 1 <= x <= y <= n
Alors :
A = A(1..x-1) + A(x..y) + A(y+1..n)
où :
A(1..x-1) est le texte avant la sélection
A(y+1..n) est le texte après la sélection
L'algorithme qui te concerne est alors le suivant :
1. récupérer la sélection pour la modifier : B = A(x..y)
2. remplacer la sélection par la modification : nouveau A = A(1..x-1) + B modifié + A(y+1..n)
Le programme JS :
[php]
//Récupérer les parties : avant sélection, sélection et après sélection
var AvantB = document.forms['postagenews'].news.value.substring( 0, document.forms['postagenews'].news.selectionStart -1 );
var B = document.forms['postagenews'].news.value.substring( document.forms['postagenews'].news.selectionStart, document.forms['postagenews'].news.selectionEnd );
var ApresB = document.forms['postagenews'].news.value.substring( document.forms['postagenews'].news.selectionEnd +1, document.forms['postagenews'].news.length );
//Modifier la sélection
if(balise=="URL")
{
var URL=prompt("URL=","http://");
B="["+balise+"=\""+URL+"\"]"+B+"[/"+balise+"]";
}
else
{
B="["+balise+"]"+B+"[/"+balise+"]";
}
//Remplacer la sélection
document.forms['postagenews'].news.focus();
document.forms['postagenews'].news.value= AvantB + B + ApresB;
break;
[/php]