panos78 Δημοσ. 18 Ιουνίου 2009 Δημοσ. 18 Ιουνίου 2009 Ελπίζω να μην σας κουράσω με το μεγάλο θέμα. Έχω το εξής πρόβλημα: Έχω μια λίστα (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. Ωστόσο, μόνο στον ΙΕ λειτουργεί χωρίς κανένα σφάλμα. Γνωρίζει κάποιος τι αλλαγή θα πρέπει να γίνει στον παραπάνω κώδικά για να λειτουργεί όπως στον ΙΕ; Ευχαριστώ για τις απαντήσεις σας και συγνώμη για το μακροσκελές θέμα.
Foutrelis Δημοσ. 18 Ιουνίου 2009 Δημοσ. 18 Ιουνίου 2009 Καλησπέρα, Κανονικά δε θα έπρεπε να δουλεύει ούτε σε IE. Αν δε παραβλέπω κάτι, κάνεις: >a = document.getElementById(selectID).value; με selectID = "xora". Όμως, δεν έχει δωθεί κάποιο id στο select. Υπάρχουν δύο εμφανείς λύσεις: 1) Δίνεις το id που πρέπει στο select. 2) Αντί για getElementById, κάνεις getElementsByName (προσοχή, η δεύτερη συνάρτηση επιστρέφει ένα array αντικειμένων).
panos78 Δημοσ. 18 Ιουνίου 2009 Μέλος Δημοσ. 18 Ιουνίου 2009 Σε ευχαριστώ για την επισήμανση. Εμφανίζει τον αριθμό αλλά μόνο αν κανω refresh τη σελίδα. Τι μπορεί να φταίει;
Foutrelis Δημοσ. 19 Ιουνίου 2009 Δημοσ. 19 Ιουνίου 2009 Δεν είμαι σίγουρος για ποιο λόγο μπορεί να συμβαίνει αυτό που περιγράφεις. Αν θέλεις, παρέθεσε τον κώδικα HTML ώστε να βλέπουμε το ίδιο πράγμα.
thanocaster Δημοσ. 19 Ιουνίου 2009 Δημοσ. 19 Ιουνίου 2009 Ελπίζω να μην σας κουράσω με το μεγάλο θέμα.Έχω το εξής πρόβλημα: Έχω μια λίστα (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), χωρίς να το κλείνεις πουθενά...
panos78 Δημοσ. 19 Ιουνίου 2009 Μέλος Δημοσ. 19 Ιουνίου 2009 Τελικά, διορθώθηκε με ένα απλό καθάρισμα της cache. Σχετικά με τη μεταβλήτή $xores ανοίγουν και κλείνουν κανονικά: $xores .= ($key!='' ? '<option value="'.$key.'">'.$value[0].($value[1]!='' ? ' (+'.$value[1].')' : '') : '')."\r\n";
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.