Wysiwyg : Rechercher un mot dans un SPAN ou un DIV ???

Résolu
cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012
- 30 avril 2008 à 10:56
cs_bultez
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
- 6 mai 2008 à 19:06
Bonjour,

Je cherche a créer une fonction qui permet de rechercher un mot uniquement dans un span spécifique (), et non dans toute la page !!!

D'avance merci.
Fabiano13

40 réponses

cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012

6 mai 2008 à 16:40
Voici un petit complément : liste de mots à exclure

<script type="text/JavaScript">
function Rechercher(LeMot) {

var MotsInterdit = "le,la,petit"
var TabMotsInterdit = MotsInterdit.split(",")



for (var k=0; k<TabMotsInterdit.length;k++){
if (LeMot.toLowerCase()==TabMotsInterdit[k].toLowerCase()){
return false;
}}


    var sSelectBlock1, sSelectBlock2, cont;
    sBlockSpan = document.getElementById("foo2");    sSelectBlock1 sSelectBlock2 document.body.createTextRange();
    sSelectBlock1.moveToElementText(sBlockSpan);
   
    while (sSelectBlock1.findText(LeMot)) {
        if (sSelectBlock1.offsetTop>sBlockSpan.offsetTop+sBlockSpan.offsetHeight){break;}
        sSelectBlock1.select();
  sSelectBlock1.scrollIntoView();
if (confirm("Est-ce bon ?")) {
alert('On transfère "' + LeMot + '" dans la liste !!')
return false;
}
        sSelectBlock1.collapse(false);
        sSelectBlock2 = sSelectBlock1.duplicate();
        sSelectBlock1.moveToElementText(sBlockSpan);
        sSelectBlock1.setEndPoint("StartToEnd", sSelectBlock2);
    }
}
</script>
</head>


Rechercher (Et)

Maître Corbeau, sur un arbre perché,
           Tenait en son bec un fromage.
       Maître Renard, par l'odeur alléché,
           Lui tint à peu près ce langage :
       Et bonjour, Monsieur du Corbeau,
    Que vous êtes joli ! que vous me semblez beau !
           Sans mentir, si votre ramage
           Se rapporte à votre plumage,
     Vous êtes le Phénix des hôtes de ces bois.
À ces mots le Corbeau ne se sent pas de joie,
           Et pour montrer sa belle voix,
   Il ouvre un large bec, laisse tomber sa proie.
   Le Renard s'en saisit, et dit : Mon bon Monsieur,
              Apprenez que tout flatteur
     Vit aux dépens de celui qui l'écoute.
   Cette leçon vaut bien un fromage sans doute.
           Le Corbeau honteux et confus
   Jura, mais un peu tard, qu'on ne l'y prendrait plus


 

    Maître Corbeau, sur un arbre perché,
           Tenait en son bec un fromage.
       Maître Renard, par l'odeur alléché,
           Lui tint à peu près ce langage :
       Et bonjour, Monsieur du Corbeau,
    Que vous êtes joli ! que vous me semblez beau !
           Sans mentir, si votre ramage
           Se rapporte à votre plumage,
     Vous êtes le Phénix des hôtes de ces bois.
À ces mots le Corbeau ne se sent pas de joie,
           Et pour montrer sa belle voix,
   Il ouvre un large bec, laisse tomber sa proie.
   Le Renard s'en saisit, et dit : Mon bon Monsieur,
              Apprenez que tout flatteur
     Vit aux dépens de celui qui l'écoute.
   Cette leçon vaut bien un fromage sans doute.
           Le Corbeau honteux et confus
   Jura, mais un peu tard, qu'on ne l'y prendrait plus

Maître Corbeau, sur un arbre perché,
           Tenait en son bec un fromage.
       Maître Renard, par l'odeur alléché,
           Lui tint à peu près ce langage :
       Et bonjour, Monsieur du Corbeau,
    Que vous êtes joli ! que vous me semblez beau !
           Sans mentir, si votre ramage
           Se rapporte à votre plumage,
     Vous êtes le Phénix des hôtes de ces bois.
À ces mots le Corbeau ne se sent pas de joie,
           Et pour montrer sa belle voix,
   Il ouvre un large bec, laisse tomber sa proie.
   Le Renard s'en saisit, et dit : Mon bon Monsieur,
              Apprenez que tout flatteur
     Vit aux dépens de celui qui l'écoute.
   Cette leçon vaut bien un fromage sans doute.
           Le Corbeau honteux et confus
   Jura, mais un peu tard, qu'on ne l'y prendrait plus
.
3
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
30 avril 2008 à 11:07
Salut,

>>Je cherche a créer une fonction qui permet de rechercher un mot uniquement dans un span spécifique (), et non dans toute la page !!!
      Qu'es ce qui ne marche pas dans ta fonction ?
      Un petit bout de code serai le bienvenue !

a++

Si t'a besoin d'aide, MP !!!
0
cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012

30 avril 2008 à 11:33
Petite explication :

1) span : wsy (ContentEditable)2) 2 listes déroulantes (ListeDeMots1 listes de mots à chercher, ListeDeMots2 listes de mots trouvé)
3) nom du formulaire : formulaire1

J'ai deux listes à choix multiples. La première stock des mots à chercher, la deuxième sert à stocker les mots trouvés.
Tu noteras que cela marche très bien avec un "textarea" mais pas avec un "span" !

<script>


function ChercherUnMotDansSpan(str,strLng,strVal) {
  var TexteConcerne = ""
  var i = 0
  var Trouve = ""


var MotsInterdit = "le,la,petit"
var TabMotsInterdit = MotsInterdit.split(",")


for (var k=0; k<TabMotsInterdit.length;k++){
if (str.toLowerCase()==TabMotsInterdit[k].toLowerCase()){
return false


}else{


var ListeDesMotsAChercher = document.formulaire1.ListeDeMots2 // Liste à choix multiple


//TexteConcerne = window.document.formulaire1.sTextarea.createTextRange(); // TEXTAREA


TexteConcerne = wsy.document.selection.createRange().parentElement().getElementsByTagName("Span") // SPAN


TexteConcerne = document.body.createTextRange();
      
    for (i = 0; i <= n && (Trouve = TexteConcerne.findText(str)) != false; i++) {
      TexteConcerne.moveStart("character", 1);
      TexteConcerne.moveEnd("textedit");
    }
 
    if (Trouve) {
      TexteConcerne.moveStart("character", -1);
      TexteConcerne.findText(str);
      TexteConcerne.select();
      TexteConcerne.scrollIntoView();
      n++;
    
     if (confirm(strLng)){
      ListeDesMotsAChercher.options[ListeDesMotsAChercher.options.length] = new Option(strLng,strVal);  // si c'est OK bascule le mot trouvé dans la liste "ListeDeMots2"
      n=0;
      }else{
      ChercherUnMotDansSpan(str,strLng,strVal); // si ce n'est pas le mot souhaité alors continue ta recherche
      }
    
    } else {
   
    if (n > 0){n=0;}
    }   
    break
}}
}




function MotAChercherDansListe(){
NbCol1 = document.formulaire1.elements.ListeDeMots1.length;
for(a=0; a<NbCol1; a++){ document.formulaire1.elements.ListeDeMots1.options[a].selected = true; }
var chaine = document.formulaire1.elements.ListeDeMots1.options[document.formulaire1.elements.ListeDeMots1.selectedIndex].text;
var reg=new RegExp("[ ]+", "g");
for (i=0; i<document.formulaire1.ListeDeMots1.options.length; i++) {
  if (document.formulaire1.ListeDeMots1.options[i].selected ) {
    chaine = document.formulaire1.ListeDeMots1.options[i].text;
    sVal = document.formulaire1.ListeDeMots1.options[i].value
    var reg=new RegExp("[ ]+", "g");
    var tableau=chaine.split(reg);
for (var x=0; x<tableau.length; x++) {
  ChercherUnMotDansSpan(tableau[x],chaine,sVal)
  break
}
}
}
}




</script>
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
30 avril 2008 à 11:46
ok, merci pour l'explication !

Déja ce que j'ai remarqué c'est que tu ne mettais pas de ";" après chaque instruction dont la fameuse ligne concernant le span !!!

Ensuite je ne suis pas sur de ce que je dis mais es ce normal que tu laisse les parenthèses par exemple ici ce qui es en rouge :

TexteConcerne = wsy.document.selection.createRange().parentElement().getElementsByTagName("Span") // SPAN

Conclusion : vérifie que les parenthèse ne sont pas en trop et surtout, ajoute les points virgules manquant !!!

a++

Si t'a besoin d'aide, MP !!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012

30 avril 2008 à 11:54
Non ça c'est nul, n'en prend pas compte. C'est juste que j'ai fait un test ! Je comptai créer une condition !

As tu une piste ?
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
30 avril 2008 à 11:58
as tu un  message d'erreur, regarde sur la console d'erreur firefox et met nous les erreurs ici si il y en a !
Sinon pour l'instant je sèche !

a++

Si t'a besoin d'aide, MP !!!
0
cs_bultez
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
30 avril 2008 à 12:03
Bonjour,
    createrange ( exclusf IE je crois ), c'est sur le texte sélectionné
    il suffit (?) de sélectionner le texte du span.

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
30 avril 2008 à 12:09
o super merci de venir notre secour bultez, je sèche complètement, as tu une idée

Si t'a besoin d'aide, MP !!!
0
cs_bultez
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
30 avril 2008 à 12:13
comme dit dans le message : 
    createrange ( exclusf IE je crois ), c'est sur le texte sélectionné
    il suffit (?) de sélectionner le texte du span.    à tester donc ?<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
30 avril 2008 à 12:17
ok !

Si t'a besoin d'aide, MP !!!
0
cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012

30 avril 2008 à 12:42
Comment tu sélectionnes un SPAN ?
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
30 avril 2008 à 12:50
je crois qu'il faut faire quelque chose de ce genre :

document.getElementById("id de ton span").select();
ou :
document.getElementById("id de ton span").innerText.select();

Si t'a besoin d'aide, MP !!!
0
cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012

30 avril 2008 à 13:21
Impossible de selectionner uniquement le contenu du span !!!!

var SelectionSPAN = wsy.document.selection.createRange();
SelectionSPAN.select();

ou

var SelectionSPAN = document.getElementById("wsy").selection.createRange();
SelectionSPAN.select();
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
30 avril 2008 à 13:24
tu a assayé :

var span = document.getElementById("wsy").innerText;
span.select;

Si t'a besoin d'aide, MP !!!
0
cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012

30 avril 2008 à 13:35
Ca ne marche pas !

j'ai même testé :

var span = document.getElementById("wsy").innerText;
span.select();

var span = document.getElementById("wsy").outerText;
span.select();
0
cs_bultez
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
30 avril 2008 à 13:37
faut pas chercher à inventer....
lu chez selfHTML :
select()
    Sélectionne tout le texte contenu dans le champ. N'attend pas de paramètres.
    Peut être utilisé sur: Champs de saisie pour mot de passe champs de saisie à une ligne champs
        de saisie à plusieurs lignes Exemple:
    donc à priori, pas sur un span....

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
30 avril 2008 à 13:58
ok donc sa fonction ne marchera pas, il faut trouver autre chose !

Si t'a besoin d'aide, MP !!!
0
cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012

30 avril 2008 à 14:26
Je continue à chercher...
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
30 avril 2008 à 14:30
ok, si tu trouve la réponse tient nous au courant, je fais pareil de mon coté !

Si t'a besoin d'aide, MP !!!
0
cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012

30 avril 2008 à 16:23
Voila, j'ai pu avancer sur la sélection du div.


Voici le code pour sélectionner tout le texte du div.


Il nous reste qu'a trouverla manière de chercher un mot !


===============================================================


<script>


function ToutSelectionnerDiv(){
   if (document.selection){
   document.selection.empty();
   }else{
   if (window.getSelection){
   window.getSelection().removeAllRanges();
   }}
   if (document.selection){
      var sSelection = document.body.createTextRange();
      sSelection.moveToElementText(document.getElementById('foo2'));
      sSelection.select();
   }else{
   if (window.getSelection){
      var sSelection = document.createRange();
      sSelection.selectNode(document.getElementById('foo2'));
      window.getSelection().addRange(sSelection);
   }}
}


</script>




Texte texte texte Texte texte texte Texte texte texte Texte texte texte Texte texte texte...



Bouton
0