Προς το περιεχόμενο

Πρόβλημα με onChange σε select στον Firefox


panos78

Προτεινόμενες αναρτήσεις

Δημοσ.

Ελπίζω να μην σας κουράσω με το μεγάλο θέμα.

Έχω το εξής πρόβλημα:

Έχω μια λίστα (select) με τα ονόματα όλων των χωρών του κόσμου και δίπλα σε κάθε όνομα και μέσα σε παρένθεση τον διεθνή κωδικό κλήσης της χώρας. Κάτω από τη λίστα θέλω να εμφανίζεται ο διεθνής κωδικός κάθε φορά που αλλάζει η επιλογή της λίστας. Ο κώδικας (σε περίληψη) είναι ο εξής:

><? $countries = array('Αγία Έδρα (Πόλη του Βατικανού)','Αγία Ελένη','Αγία Λουκία','Άγιος Βικέντιος και Γρεναδίνες','Άγιος Κιττς και Νέβις','Άγιος Μαρίνος','Άγιος Πέτρος και Μικελόν','Άγιος Χριστόφορος','Αζερμπαϊτζάν','Αίγυπτος','Αιθιοπία');
$dialcodes = array('379','290','1758','1784','1869','378','508','1869','994','20','251');
$countries = array_combine($countries,$dialcodes);
$c_array = array('');
foreach($countries as $key => $value)
{
   $array = array($key,$value);
   array_push($c_array,array($key,$value));
}
$countries = $c_array;
?>
<head>
<script type="text/javascript" language="JavaScript">
dialcode = new Array();
<?
foreach($countries as $key => $value)
{
   echo 'dialcode.push("'.$value[1].'");'."\r\n";
   $xores .= ($key!='' ? '<option value="'.$key.'">'.$value[0].($value[1]!='' ? ' (+'.$value[1].')' : '') : '')."\r\n";
}
?>
function getxora(spanID,selectID)
{
   a = document.getElementById(selectID).value;
   document.getElementById(spanID).innerHTML = dialcode[a]!='' && a!=0 ? '<b>+' + dialcode[a] + '</b>' : ''; 
}
</script></head><body><form>
<?
echo '<select name="xora" value="" onChange="getxora(\'dial\',this.name)"><option value="">'.$xores.'</select><br><span id="dial"></span></form></body>';
?>

Όλα τα παραπάνω θα έπρεπε να λειτουργούν σωστά, θεωρητικά, τόσο σε Internet Explorer όσο και στον Firefox.

Ωστόσο, μόνο στον ΙΕ λειτουργεί χωρίς κανένα σφάλμα.

Γνωρίζει κάποιος τι αλλαγή θα πρέπει να γίνει στον παραπάνω κώδικά για να λειτουργεί όπως στον ΙΕ;

Ευχαριστώ για τις απαντήσεις σας και συγνώμη για το μακροσκελές θέμα.

:-)

Δημοσ.

Καλησπέρα,

 

Κανονικά δε θα έπρεπε να δουλεύει ούτε σε IE. Αν δε παραβλέπω κάτι, κάνεις:

 

>a = document.getElementById(selectID).value;

 

με selectID = "xora". Όμως, δεν έχει δωθεί κάποιο id στο select.

 

Υπάρχουν δύο εμφανείς λύσεις:

 

1) Δίνεις το id που πρέπει στο select.

2) Αντί για getElementById, κάνεις getElementsByName (προσοχή, η δεύτερη συνάρτηση επιστρέφει ένα array αντικειμένων).

Δημοσ.

Σε ευχαριστώ για την επισήμανση.

Εμφανίζει τον αριθμό αλλά μόνο αν κανω refresh τη σελίδα.

Τι μπορεί να φταίει;

Δημοσ.

Δεν είμαι σίγουρος για ποιο λόγο μπορεί να συμβαίνει αυτό που περιγράφεις. Αν θέλεις, παρέθεσε τον κώδικα HTML ώστε να βλέπουμε το ίδιο πράγμα.

Δημοσ.
Ελπίζω να μην σας κουράσω με το μεγάλο θέμα.

Έχω το εξής πρόβλημα:

Έχω μια λίστα (select) με τα ονόματα όλων των χωρών του κόσμου και δίπλα σε κάθε όνομα και μέσα σε παρένθεση τον διεθνή κωδικό κλήσης της χώρας. Κάτω από τη λίστα θέλω να εμφανίζεται ο διεθνής κωδικός κάθε φορά που αλλάζει η επιλογή της λίστας. Ο κώδικας (σε περίληψη) είναι ο εξής:

><? $countries = array('Αγία Έδρα (Πόλη του Βατικανού)','Αγία Ελένη','Αγία Λουκία','Άγιος Βικέντιος και Γρεναδίνες','Άγιος Κιττς και Νέβις','Άγιος Μαρίνος','Άγιος Πέτρος και Μικελόν','Άγιος Χριστόφορος','Αζερμπαϊτζάν','Αίγυπτος','Αιθιοπία');
$dialcodes = array('379','290','1758','1784','1869','378','508','1869','994','20','251');
$countries = array_combine($countries,$dialcodes);
$c_array = array('');
foreach($countries as $key => $value)
{
   $array = array($key,$value);
   array_push($c_array,array($key,$value));
}
$countries = $c_array;
?>
<head>
<script type="text/javascript" language="JavaScript">
dialcode = new Array();
<?
foreach($countries as $key => $value)
{
   echo 'dialcode.push("'.$value[1].'");'."\r\n";
   [b]$xores .= ($key!='' ? '<option value="'.$key.'">'.$value[0].($value[1]!='' ? ' (+'.$value[1].')' : '') : '')."\r\n";[/b]
}
?>
function getxora(spanID,selectID)
{
   a = document.getElementById(selectID).value;
   document.getElementById(spanID).innerHTML = dialcode[a]!='' && a!=0 ? '<b>+' + dialcode[a] + '</b>' : ''; 
}
</script></head><body><form>
<?
[b]echo '<select name="xora" value="" onChange="getxora(\'dial\',this.name)"><option value="">'.$xores.'</select><br><span id="dial"></span></form></body>';[/b]
?>

Όλα τα παραπάνω θα έπρεπε να λειτουργούν σωστά, θεωρητικά, τόσο σε Internet Explorer όσο και στον Firefox.

Ωστόσο, μόνο στον ΙΕ λειτουργεί χωρίς κανένα σφάλμα.

Γνωρίζει κάποιος τι αλλαγή θα πρέπει να γίνει στον παραπάνω κώδικά για να λειτουργεί όπως στον ΙΕ;

Ευχαριστώ για τις απαντήσεις σας και συγνώμη για το μακροσκελές θέμα.

:-)

 

Δοκίμασε στο onChange σου select σου να βάλεις μετά τη getxora και ένα this.submit(). Έτσι, κάθε φορά που θα αλλάζεις την τιμή του drop down, θα σου κάνει submit τη φόρμα. Επίσης βλέπω να ανοίγεις 2 φορές το tag option (εντός και εκτός μεταβλητής $xores), χωρίς να το κλείνεις πουθενά...

Δημοσ.

Τελικά, διορθώθηκε με ένα απλό καθάρισμα της cache.

Σχετικά με τη μεταβλήτή $xores ανοίγουν και κλείνουν κανονικά:

$xores .= ($key!='' ? '<option value="'.$key.'">'.$value[0].($value[1]!='' ? ' (+'.$value[1].')' : '') : '')."\r\n";

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...