Wysiwyg : Rechercher un mot dans un SPAN ou un DIV ??? [Résolu]

Signaler
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
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

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

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
.
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
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 !!!
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012

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>
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
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 !!!
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012

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 ?
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
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 !!!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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]
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
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 !!!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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]
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
ok !

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

Comment tu sélectionnes un SPAN ?
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
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 !!!
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012

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();
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
tu a assayé :

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

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

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();
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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]
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
ok donc sa fonction ne marchera pas, il faut trouver autre chose !

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

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

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

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