Pb pour réinitialiser un compteur dans ma fonction "Recherche dans la page&

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Pb pour réinitialiser un compteur dans ma fonction "Recherche dans la page&

Pb pour réinitialiser un compteur dans ma fonction "Rec

par Anne B » 11 avr. 2008, 23:58

Bonsoir,

Je viens peut être de trouver un élément de réponse :

"Contrairement à Microsoft Internet Explorer, dans lequel presque toutes les sortes d'éléments peuvent recevoir l'évènement focus, presqu'aucune sorte d'élément ne reçoit cet évènement dans les navigateurs utilisant Gecko."

Ceci est tiré de "http://developer.mozilla.org/fr/docs/DO ... nt.onfocus".


Mais voilà quelques jours que je tourne et retourne le problème sans solution.
A savoir : comment réinitialiser mon compteur pour que la recherche recommence au début du texte si l'utilisateur modifie sa recherche en cours de route (en sélectionnant un nouvel élément dans le menu déroulant)?

Avez-vous une piste?

Merci

Pb pour réinitialiser un compteur dans ma fonction "Rec

par Anne-B » 10 avr. 2008, 15:21

Je voulais préciser que l'on visualise les différentes occurences trouvées en appuyant sur la touche "Entrée".

Pb pour réinitialiser un compteur dans ma fonction "Rec

par Anne B » 10 avr. 2008, 15:10

Bonjour,

Merci à Ryle pour sa piste de recherche suite à mon post (Créer une fonction "Recherche dans la page") du 03/04/08 dans le forum "Débuter en PHP".

J'ai adapté un script qui fonctionne chez i.e mais pas chez FF en ce qui concerne la réinitialisation d'un compteur. Je m'explique :

J'ai une fonction qui recherche un terme dans une page non pas à partir d'un champs de saisie mais à partir d'un menu déroulant. Lorsque la recherche est terminée, un message d'alerte l'indique et le focus revient sur le menu déroulant. CELA FONCTIONNE TRES BIEN CHEZ I.E ET FF.


Code dans le head :

Code : Tout sélectionner

<script language="JavaScript"> var n = 0; function findInPage(string) { var txt, i, found; if (string != "") { if (document.all) { //i.e txt = window.document.body.createTextRange(); for (i = 0; i <= n && (found = txt.findText(string)) != false; i++) { //moveStart(String mode, Integer n) //Définit l'unité à utiliser. Déclenche une erreur "Argument non valide" dans le cas où l'unité est inconnue //Définit le nombre d'unités que le curseur de départ doit se déplacer, relativement à sa position d'origine. txt.moveStart("character", 1); txt.moveEnd("textedit"); } if (found) { //Si texte trouvé, le sélectionner et faire défiler la page pour qu'il soit visible txt.moveStart("character", -1); txt.findText(string); txt.select();//crée une sélection active sur le texte txt.scrollIntoView();//fait défiler jusqu'au texte n++; } else { //Si plus de texte trouvé alors recherche terminée. Réinitialisation du compteur. search.quoi.focus(); alert("La recherche est terminée."); n = 0; } document.onkeypress=touche; } else { //autres navigateurs. Utilisation de window.find() au lieu de createTextRange() //Si texte trouvé, le sélectionner et faire défiler la page pour qu'il soit visible if (window.find(string)) { n++; } else { //Si plus de texte trouvé alors recherche terminée. Réinitialisation du compteur. search.quoi.focus(); alert("La recherche est terminée."); n = 0; } document.onkeypress=touche; } } return false; } function touche(e) { if (document.all) { if (event.keyCode==13) { findInPage(document.search.quoi.options[document.search.quoi.selectedIndex].value); } } else { if (e.which==13) { findInPage(document.search.quoi.options[document.search.quoi.selectedIndex].value); } } } </script>

Mais si je décide en cours de recherche de faire une nouvelle recherche, la recherche va reprendre là où mon compteur s'est arrété et ne va donc pas reprendre au début de la page du moins chez FF car chez i.e c'est OK.


Code dans le body:

Code : Tout sélectionner

<div> <form name="search"> <select name="quoi" onchange="javascript: return findInPage(document.search.quoi.options[document.search.quoi.selectedIndex].value);" onfocus="n=0;" /><option selected value="">choisir</option><option value="prix">prix</option><option value="à">à</option></select> </form> </div> <br /><br /><br /><br /><br /> <div style="width: 250px"> Sur le long terme, les prix moyens augmentent nettement au-delà de l’inflation. Excepté pour le 0*1*, le taux moyen de croissance par catégorie est supérieur d’au moins 40% au taux annuel de l’inflation. Nous constatons que les noeuds de cycles affectent les prix moyens comme les taux d’occupation. Les baisses ou tassements des prix moyens observés accompagnent en temps réels la baisse des taux d’occupation. Ces 30 dernières années, la capacité progresse de 3.8% en moyenne annuellement et les prix moyens augmentent eux-mêmes en monnaie constante de manière continue. Ceci ramène l’analyse des cycles à des à-coups en matière de taux d’occupation et à une progression constante des prix moyens sur le long terme. Si la fréquentation connaît une évolution cyclique, les prix moyens chambres sont moins marqués par ces phases de développement et de contraction de l’offre hôtelière sur la France. On observe des paliers, mais pas de véritables reflux des Prix moyens sur le temps. Depuis 1997-1998 – année de la Coupe du Monde de football, nous observons le prix moyen a progressé de 20% pour le 4* Supérieur, de 16.5% pour le 4* standard, de 16% pour le 3*, de 27.3% pour le 2* et de 38% pour le 0*/1*. </div>


Il semblerait que FF n'interprète pas cette partie du code :

Code : Tout sélectionner

onfocus="n=0;"



Merci pour votre aide.