ntountou Δημοσ. 16 Ιουλίου 2005 Δημοσ. 16 Ιουλίου 2005 Σε συνέχεια του χθεσινού topic θέλω να ρωτήσω πως υλοποιείται φόρμα στην οποία κάποια πεδία της εμφανίζονται/εξαφανίζονται δυναμικά. π.χ. όταν κάποιος συμπληρώνει τα στοιχεία του και του ζητείται να δηλώσει τόπο διαμονής από μια έτοιμη λίστα, αν διαλέξει ΕΛΛΑΔΑ τότε αυτόματα να εμφανίζεται και ένα νέο πεδίο που θα του ζητάει να διαλέξει νομό. κάτι τέτοιο είδα στην φορμα εγγραφής του pathfinder http://edit.pathfinder.gr/signup.php Λογικά θέλει javascript για να είναι client-side η επεξεργασία, αλλά είναι η καλύτερη λύση?
ntountou Δημοσ. 16 Ιουλίου 2005 Μέλος Δημοσ. 16 Ιουλίου 2005 Θα ήθελα να προσθέσω ότι το link που παραθέτω πιο πάνω είναι φυσικά προς αρχείο τύπου php. Παρόλ' αυτά υπάρχει και κώδικας javascript ενσωματωμένος (δεν έτυχε να ξανασυναντήσω τέτοιο συνδιασμό αλλά δε με παραξενεύει κιόλας.. anyway). Επίσης το submit που έχει στο τέλος της φόρμας παραπέμπει προς το ΙΔΙΟ αρχείο, δλδ το signup.php (δλδ στον εαυτό του!!!) κι αυτό γιατί στη δήλωση της φόρμας είναι <form action="/signup.php" method="POST">. Όπως και σε περίπτωση που γίνει κάποια αλλαγή στην επιλογή του τόπου διαμονής από την σχετική λίστα, τότε αυτή ανιχνεύεται μεσω του event-handler onchange="this.form.submit()" και τελικά παραπέμπει πάλι στον εαυτό του (δλδ το signup.php) κάτι δε καταλαβαίνω στην λειτουργία της φόρμας και στο πως τελικά το πεδίο με τους νομούς μια εμφανίζεται και μια εξαφανίζεται... αν μπορεί κάποιος ας δώσει τα φώτα του. thanx
alkisg Δημοσ. 16 Ιουλίου 2005 Δημοσ. 16 Ιουλίου 2005 Μια πολύ ωραία ιδιότητα CSS είναι η display:none. Εκεί βασίζονται οι περισσότερες αποκρύψεις πεδίων, μενού κτλ μέσω javascript ή CSS. Π.χ. σώσε το παρακάτω σαν test.htm και άνοιξέ το: > <BODY> <P>Now you see me</P> <P style="display:none">Now you don't</P> </BODY> Μετά με javascript αλλάζεις απλά το style. Όσο για το action που είναι signup.php, δεν είναι περίεργο, πολλά php αρχεία κατασκευάζουν html σελίδα ΚΑΙ συγχρόνως παραλαμβάνουν το αποτέλεσμα της φόρμας... Ουσιαστικά ελέγχουν αν έχει γίνει post η φόρμα και όλα τα πεδία της, αλλιώς εμφανίζουν την αρχική html σελίδα κτλ.
ntountou Δημοσ. 18 Ιουλίου 2005 Μέλος Δημοσ. 18 Ιουλίου 2005 thanx alkisg... θα το δοκιμάσω και ελπίζω να πάνε όλα καλά
ntountou Δημοσ. 18 Ιουλίου 2005 Μέλος Δημοσ. 18 Ιουλίου 2005 Επανέρχομαι με μια ολοκληρωμένη πρόταση για εμφάνιση/απόκρυψη πεδίου: <HTML> <HEAD> <TITLE>Έξυπνη φόρμα</TITLE> <SCRIPT> function yes() { TESTDiv.style.visibility='visible'; mainform.LabelText.focus(); } function no() { TESTDiv.style.visibility='hidden'; } </SCRIPT> </HEAD> <BODY> <FORM NAME="mainform"> Θέλεις να δεις το κρυμμένο πεδίο? <INPUT TYPE="RADIO" NAME="CONTROL" onclick="yes();">Ναι <INPUT TYPE="RADIO" NAME="CONTROL" onclick="no();" CHECKED>Όχι <BR> <DIV ID="TESTDiv" style="visibility:hidden"> <LABEL FOR="LabelText"> <INPUT TYPE="TEXT" ID="LabelText"> Συνοδευτικό κείμενο</LABEL> </DIV> <BR> <INPUT TYPE="SUBMIT"> <INPUT TYPE="RESET" onclick="no()"> </FORM> </BODY> </HTML>
random Δημοσ. 18 Ιουλίου 2005 Δημοσ. 18 Ιουλίου 2005 Παντως το pathfinder (kai ta perissotera που κανουν κατι παρόμοιο) κανει post τη φορμα, και η εμφανιση ή οχι καθοριζεται απο server side - php. Αν θες τη γνωμη μου, το θεωρω μπελά και μονο για τις εντυπώσεις, γιατι πρεπει να φροντισεις, αν ο χρηστης εχει συμπληρωσει μερικα πεδια, και μετα ξαναγυρισει και αλλαξει τη χωρα, με το που ξαναγυρισει η σελιδα -με εμφανισμενο ή οχι το νομο - να του φερεις και αυτα που ειχε συμπληρωσει και οχι να τα φερεις κενά ή με default values. συν, η καθυστερηση που προκαλεί ενα ποστ και reload page. στο pathfinder επισης, κανουν το ιδιο πραγμα με οποιαδηποτε αλλαγη χώρας, ενω η εμφάνιση/κρυψιμο νομού, ενδιαφέρει μονο όταν το old/new value ειναι Ελλάδα. Εγω θα ειχα συνεχεια visible το νομό, και αν θελει ο καθε ζζζτττ.. να βαλει νομό Χίου με χώρα Ουγκάντα, απλά δεν το καταχωρώ στη βάση. ---------------- Αυτο με το style, έξυπνο. πρεπει να το δοκιμάσεις στους βασικούς browser για να εισαι σιγουρος. opera, firefox, IE. αν πεσεις στον ζζζτττ, μπορει να το εμφανισει, να το συμπληρωσει, να το κρυψει, και να κανει submit. πρεπει με το κρυψιμο να του κανεις και ενα value=""
Jacaranda Bill Δημοσ. 18 Ιουλίου 2005 Δημοσ. 18 Ιουλίου 2005 Θα διαφωνήσω με τον random. Το να έχεις javascript για την εμφάνιση / απόκρυψη πεδίου αλλά και για ελέγχους τιμών είναι μέγαλο πλεονέκτημα σε μια ιστοσελίδα. Ο μόνος λόγος που θα θέλεις να το κάνεις server side είναι αν για οποιοδήποτε λόγο θεωρούσες ότι οι browser των επισκεπτών σου δεν έχουν ενεργοποιημένη την javascript ή εαν είχες μια σειρά από ελέγχους που για λόγους ταχύτητας ήθελες να τους ομαδοποιήσεις να εκτελούνται στον server. Εγω θα ειχα συνεχεια visible το νομό, και αν θελει ο καθε ζζζτττ.. να βαλει νομό Χίου με χώρα Ουγκάντα, απλά δεν το καταχωρώ στη βάση. Nαι, και αυτό είναι μια λύση αλλά δεν είναι και η κομψότερη επιπλέον θέλεις τον server side κώδικα για να μην καταχωρήσεις την Ουγκάντα.
ntountou Δημοσ. 18 Ιουλίου 2005 Μέλος Δημοσ. 18 Ιουλίου 2005 αν πεσεις στον ζζζτττ, μπορει να το εμφανισει, να το συμπληρωσει, να το κρυψει, και να κανει submit. πρεπει με το κρυψιμο να του κανεις και ενα value="" Σωστή παρατήρηση. Επίσης είμαι της άποψης ότι για τα ελληνικά δεδομένα (για ταχύτητες μεταφοράς δεδομένων μιλάω), προτιμότερο είναι όσοι περισσότεροι έλεγχοι μπορούν να γίνουν στην πλευρά του client να γίνουν εκεί.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.