OnFocus sur une case de recherche

Résolu
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 - 28 juil. 2006 à 11:26
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 28 juil. 2006 à 17:20
bonjour,

voilà, pour faire simple j'ai une case de recherche qui contient par défaut le texte "Recherche", quand je clique dessus je veux que le texte s'efface seulement s'il vaut "Recherche". Ca marche niquel sous Firefox, mais partiellement sous IE.

En fait, il arrive que dans une certaine page, j'ai deux cases recherche, une sous l'id "tsearch", l'autre sous l'id "search".
Sous Firefox, le script marche pour search et tsearch, mais sous IE, cela ne marche pas pour l'id "search".

Voilà comment je procède :
dans ma jsp, voilà la case recherche "search" et l'autre case "tsearch":
_ "search" :

<script type="text/javascript" src="js/custom/recherche.js"></script>
    <li>
        
        
    </li>

_ "tsearch" :
<script type="text/javascript" src="js/custom/recherche.js"></script>

Voilà le code de mon javascript :
<!--
function effacerSearch () {
    alert("Fonction effacerSearch");
    alert("case vaut : " + document.getElementById("search").value);
    if (document.getElementById("search").value=="Recherche") {document.getElementById("search").value="";}
}
function effacerTSearch () {
    alert("Fonction effacerTSearch");
    if (document.getElementById("tsearch").value=="Recherche") {document.getElementById("tsearch").value="";}
}
//-->

Sous firefox, le alert() de la fonction effacerSearch() renvoit "Recherche" (donc il trouve bien l'élément référencé par l'id "search", et sous IE, pour la même page ouverte, cela donne "undefined" (il ne trouve plus l'id "search") ! ! !

Ma question est la suivante : est-ce que getElemenetById marche aussi bien pour Firefox et IE ? D'ou le problème peut-il venir ?
(je suis débutant en javascript)

Merci d'avance....
Teedee

15 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
28 juil. 2006 à 12:25
B

onjour...

le mot search étant clé je te proposes d'essayer en changeant l'ID, en reprenat le code de ton 1st message



;0)
3
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
28 juil. 2006 à 14:03
Alors en fait, c'était bien un problème d'id. Je l'ai remplacé par "rsearch", et là ca marche comme pour "tsearch"...

Merci des infos ;-)
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 juil. 2006 à 11:45
bonjour,

>>est-ce que getElemenetById marche aussi bien pour Firefox et IE ? 
   ben, oui, heureusement, sinon, 
      y'a plus qu'a s'asseoir par terre et à pleurer.
   et tel que c'est là ( enfin, sans les .js ! )



   pas de undefined... même avec IE.

>>D'ou le problème peut-il venir ?
   pas de ce qu'on voit
   l'erreur est ailleurs.





cordialement   Bul   
Site
0
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
28 juil. 2006 à 12:16
A tout hasard, tu aurais une petite fonction pour lister les éléments par "id" sous IE, comme ca je pourrais retrouver ma case, et voir la valeur qu'elle a.

Comment faire pour être sur que je pointe bien vers le bon élément ?

ps : j'ai remplacé mon javascript par ceci :
<!--
function effacerSearch () {
    if (!document.all) {
        alert("Mozilla | effacerSearch\nRecherche vaut : " + document.getElementById("search").value);
        if (document.getElementById("search").value=="Recherche") {document.getElementById("search").value="";}
    }
    else {
        alert("IE | effacerSearch\nRecherche vaut : " + top.frames["search"].value);
        if (top.frames["search"].value=="Recherche") {document.getElementById("search").value="";}
    }
}
function effacerTSearch () {
    if (document.getElementById("tsearch").value=="Recherche") {document.getElementById("tsearch").value="";}
}
//-->
0

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

Posez votre question
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
28 juil. 2006 à 12:31
Surprise
je viens de tester sous IE et ça marche avec search...?????????,








;0)
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 juil. 2006 à 12:34
pas con Peteoleteam...
j'avais même pas pensé à ça...

mais tel que ci-dessous :

<script type="text/javascript">
function effacerSearch () {
    if (document.getElementById("search").value=="Recherche") {document.getElementById("search").value="";}
 else document.getElementById("search").value="Recherche";
}
function effacerTSearch () {
    if (document.getElementById("tsearch").value=="Recherche") {document.getElementById("tsearch").value="";}
 else document.getElementById("tsearch").value="Recherche";
}
</script>













ça baigne, j'ai ajouté la remise à "Recherche"
   quand c'est différent pour les tests.
enfin ça baigne... avec IE, pas testé avec FF

cordialement   Bul   
Site
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 juil. 2006 à 12:35
croisement... eh oui ! ça baigne avec search !?!
cordialement   Bul   Site
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
28 juil. 2006 à 12:37
Effectif je n'est pas repris tout mais ce que tu mentionnes plus haut...
Y aurait-il un loup ailleurs dans la syntaxe globale...








;0)
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 juil. 2006 à 12:45
ou des interactions des .js,
ou un name d'un objet = une fonction
ou ... dur dur à dire comme ça,
      sans plus de billes.
ce qui est sûr c'est que l'erreur est ailleurs
( avec FF, doit y avoir des soucis aussi sûrement ?
    pas dans les mêmes cas de figure )




cordialement   Bul   
Site
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 juil. 2006 à 14:13
nickel si ça baigne,
merci du retour,
il devait donc y avoir, ailleurs, un truc nommé "search"
cordialement   Bul   
Site
0
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
28 juil. 2006 à 15:39
Vous allez dire que je suis lourd, mais vous ne sauriez pas comment je pourrais récupérer (alors attention aux termes, je suis newb en javascript) toutes l'arborescence des objets parents d'un objet ???

en fait, je voudrais savoir où se trouve mon objet input de type= "text" id="rsearch", pour pouvoir le récupérer sous tous les navigateurs.

Comment savoir le chemin du style : document.frame.objet1.objet2.rsearch

Sous firefox, j'utilise Firebug, et dans l'onglet DOM, je peux retrouver mes objets, mais je m'y perds, et je ne sais pas comment retrouver l'objet en question à partir de la variable 'document'

merci.

ps : mon code javascript actuel est le suivant :
<!--
function effacerSearch () {
   if (!document.all) {
        if (document.getElementById("rsearch").value=="Recherche") {document.getElementById("rsearch").value="";}
    }
    else {
        if ( document.forms ["rsearch"].value == "Recherche") { document.forms ["rsearch"].value ="";}
    }
}
function effacerTSearch () {
   if (!document.all) {
        if (document.getElementById("tsearch").value= ="Recherche") {document.getElementById("tsearch").value="";}
    }
    else {
        if ( top.frames ["tsearch"].value == "Recherche") { top.frames ["tsearch"].value ="";}
    }
}
//-->

Alors, document.frame, et top.frames plantent à l'éxécution sous IE (ce sont des tests), car ca marque : l'objet est null ou pas trouvé ou un truc dans le genre. C'est normal, c'est justement ce que je recherche ;p

merci d'avance.
(si qqln sait comment sous firebug et DOM je peux récupérer le chemin que je cherche, je suis également preneur )
0
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
28 juil. 2006 à 15:58
Bon, alors du nouveau. Je viens de tenter un truc. Sous firebug, j'ai cliqué sur mon input dont l'id est "rsearch". Dans la liste des propriétés de l'objet DOM, en face de form j'ai : <form id= "[object NodeList]">

je clique à gauche sur form, firebug m'envoit sur une autre fenetre où je vois ceci :
<form name="search" method="get" action="display.jsp">
donc je me dit, le formulaire dans lequel se trouve mon input s'appelle "search"

Donc, dans mon javascript, j'ai tout naturellement essayé ça, mais ca marche pas :-(

function effacerSearch () {
   if (!document.all) {
        if (document.getElementById("rsearch").value=="Recherche") {document.getElementById("rsearch").value="";}
    }
    else {
        if ( document.form["search"].input["rsearch"] .value =="Recherche") {document.form["search"].input["rsearch"].value="";}
    }
}

J'obtiens ça comme erreur sous IE :
Erreur: 'document.form.search' a la valeur Null ou n'est pas un objet

Si quelqu'un a une idée, je touche au but non ?
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
28 juil. 2006 à 16:13
BIZARRE...









var Obj   = document.getElementById ('Nom_Objet'); // Si il y a bien sur
var Papa = Obj.



parentNode;
var GrandPapa = Papa. parentNode ;
...etc...on remonte d'un niveau

MAIS
function effacerSearch () {
  var Obj = document.getElementById("rsearch");
  if( Obj) {
    if( Obj.value=="Recherche")
      Obj.value="";
  }
}


cette écriture te garanti de trouver sur tous les navigateurs DOM ton Objet...











;0)
0
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
28 juil. 2006 à 17:04
J'ai essayé ton 1er code sur mon id "rsearch" en affichant les .value des objets trouvés. Je suis monté à Papa et GrandPapa :

obj -> "Recherche"
Papa -> "0"
GrandPapa -> "Undefined"

J'ai aussi essayé ton 2eme code, mais là, IE me dit méchamment :
"Objet attendu"

        var Obj = document.getElementById("rsearch");
        if( Obj) {
            if( Obj.value=="Recherche")
                Obj.value="";
            }
        }

Bref, je vais en rester là... :p merci @+++
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
28 juil. 2006 à 17:20
???











je te passe une fonction qui affiche les parents...a mettre entre les balises

<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
//------------------------
function Get_Parent( div_){
  var Obj = document.getElementById( div_);
  var Html=""
  while( Obj.parentNode){
    Obj  = Obj.parentNode;
    Html = Obj.nodeName + '.' +Html;
  }
  alert( Html +div_);
}




</SCRIPT>





puis tu mets entre





 















tu cliques sur  le bouton et tu devrais avoir un truc du genre
 #document.HTML.BODY.FORM.rsearch       si la balise est dans une <FORM> ou




 #document.HTML.BODY.



.rseearch



             si la balise n'est pas dans une <FORM>

SINON passe un lien ou l'on peut voir ou ça coince...





;0)
0
Rejoignez-nous