GNT sans publicité, site mobile, fonctionnalitées exclusives...

Aide pourrégler problème avec firefox

Le
Bruno Beauchamp
Bonjour,

J'ai pu voir chez un ami qui utilise Firefox, qu'il y a un problème sur mon
site http://bbeaucha.club.fr/Cinema/recherche.php
En effet quand l'on saisi des caractères dans le champ "Avec l'acteur
suivant", un combox apparait avec des solutions obtenu de la BDD (façon
AJAX).
L'utilisateur choisi ensuite un nom dans ce combobox et le nom est reporté
dans le champ "Avec l'acteur suivant". en tout sur IE mais apparement pas
sur firefox.

Le code qui gère cela est ici après. La fonction acteur_select(), à ma
connaissance, devrait fonctionner sur tous les navigateurs alors je ne
comprens pas.

Merci d'avance si quelqu'un me donner une piste


function handleHttpResponse() {
if (xhr.readyState == 4 && xhr.status == 200) {
//var actor = xhr.responseText;
var club = xhr.responseText.indexOf('</XMP>');
//alert(club);
if (club >0) {var actor = xhr.responseText.slice(0,club);}
else {var actor = xhr.responseText}
results = actor.split(",");
taille = results.length;
if (taille > 5) {taille = 5}
//alert(xhr.responseText);
chaine = "";
chaine += "<select name='Acteur_liste'";
chaine +=" size=";
chaine += taille;
chaine +=" onclick='javascript:acteur_select();'>";
for (p in results) {
//alert (results[p]);
chaine += "<option value='";
chaine += results[p];
chaine += "'>";
chaine += results[p];
chaine += "</option>";
chaine += "";
}
chaine += "</select>";
document.getElementById('poss').innerHTML = chaine;
}
}


function acteur_select() {
document.getElementById('Acteur').value =
document.getElementById('Acteur_liste').value;
}

--
Assyril
Adresse à Modifier pour réponse
Lire les 4 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ASM
Le #663883
Bonjour,

J'ai pu voir chez un ami qui utilise Firefox, qu'il y a un problème sur mon
site http://bbeaucha.club.fr/Cinema/recherche.php


j'irai même pas voir, ce n'est pas la peine

function acteur_select() {
document.getElementById('Acteur').value =
document.getElementById('Acteur_liste').value;
}


à tous les coups tes champs ou sélecteurs
Acteur
Acteur_liste
(ou autre éléments du form) n'ont pas d'id
et n'ont qu'un nom (qui contente les approximations d'IE)
FireFox ne trouve donc pas ces éléments


<input type="text" name="Acteur" id="Acteur" >

devrait cette fois contenter tous les navigateurs
(du moins ceux causant le DOM ...)

note que tu aurais pu t'éviter ce tracas avec :

function acteur_select() {
document.forms['monForm'].elements['Acteur'].value document.forms['monForm'].elements['Acteur_liste'].value;
}

ou

function acteur_select() {
with(document.forms['monForm']) {
Acteur.value = Acteur_liste.value;
}
}

si le nom du formulaire était 'monForm'

--
Stephane Moriaux et son [moins] vieux Mac

ASM
Le #663882

Le code qui gère cela est ici après. La fonction acteur_select(), à ma
connaissance, devrait fonctionner sur tous les navigateurs alors je ne
comprens pas.
à tous z'azzards


function handleHttpResponse() {
(snip)

chaine = "";
chaine += "<select name='Acteur_liste'";


// manque l'id du sélecteur !

chaine += " id='Acteur_liste'";

chaine +=" size=";
chaine += taille;
chaine +=" onclick='javascript:acteur_select();'>n";


chaine +=" onchange='acteur_select();'>n";

sinon possiblement :

function handleHttpResponse() {
if (xhr.readyState == 4 && xhr.status == 200) {
var club = xhr.responseText.indexOf('</XMP>');
var actor = (club >0)?
xhr.responseText.slice(0,club) :
xhr.responseText;
results = actor.split(",");
taille = results.length;
if (taille > 5) {taille = 5}
var opt = '';
var selct = document.createElement('select');
selct.name = 'Acteur_liste';
selct.id = 'Acteur_liste';
selct.size = taille;
selct.onclick = 'acteur_select();
for (p in results) {
opt = document.createElement('option');
opt.value = results[p];
opt.text = results[p];
selct.appendChild(opt);
}
document.getElementById('poss').appendChild(selct);
}
}


--
Stephane Moriaux et son [moins] vieux Mac

Bruno Beauchamp
Le #663620
Dans le message 44e8ce0b$0$856$, ASM a écrit:

Le code qui gère cela est ici après. La fonction acteur_select(), à ma
connaissance, devrait fonctionner sur tous les navigateurs alors je ne
comprens pas.
à tous z'azzards


function handleHttpResponse() {
(snip)

chaine = "";
chaine += "<select name='Acteur_liste'";


// manque l'id du sélecteur !

chaine += " id='Acteur_liste'";




Merci

J'ai essayé cela. maintenant que tu me le rappelle, il me semble avoir lu
qu'il faut utiliser les ID='' et non les name=''

--
Assyril
Adresse à Modifier pour réponse


ASM
Le #663619
maintenant que tu me le rappelle, il me semble avoir lu
qu'il faut utiliser les ID='' et non les name=''


c'est à dire qu'avec :
document.getElementById('Acteur_liste')
qui contient
getElementById ( by id ! )
un navigateur "consciencieux" ne se perd pas à faire
getElementByName ( by name )
qui, d'ailleurs n'existe pas.

Le name de l'élément servira au php pour le récupérer, donc à garder.

Le name de l'élément pourra servir au JS si on utilise la bonne méthode:
document.recherche.Acteur_liste.value

L'id de l'élément est à stipuler *en plus* dans la balise de cet élément
si on emploie des méthodes ou fonctions liées au DOM :
document.getElementById('Acteur_liste').value

--
Stephane Moriaux et son [moins] vieux Mac

Publicité
Suivre les réponses
Poster une réponse
Anonyme