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

Poser une question


j'irai même pas voir, ce n'est pas la peine
à 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
// manque l'id du sélecteur !
chaine += " id='Acteur_liste'";
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
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
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