Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Aide pourrégler problème avec firefox

4 réponses
Avatar
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();'>\n";
for (p in results) {
//alert (results[p]);
chaine += "<option value='";
chaine += results[p];
chaine += "'>";
chaine += results[p];
chaine += "</option>";
chaine += "\n";
}
chaine += "</select>\n";
document.getElementById('poss').innerHTML = chaine;
}
}


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

--
Assyril
Adresse à Modifier pour réponse

4 réponses

Avatar
ASM
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

Avatar
ASM

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

Avatar
Bruno Beauchamp
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


Avatar
ASM
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