theoamd Δημοσιεύτηκε Μάϊος 28, 2012 #1 Δημοσιεύτηκε Μάϊος 28, 2012 Για να μην τα πολυλογώ έχω τον παρακάτω κώδικα<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-7" /> <title>Form Validation</title><script type="text/javascript"> function formValidator(){ err=""; var name=document.getElementById('name'); if(nameValidator(name,"Please enter a valid name")){ //return true; } var address=document.getElementById('address'); if(addrValidator(address,"Please enter a valid address")){ //return true; } var zip=document.getElementById('zip');if(zipValidator(zip,"Please enter a valid Zip Code")){ //return true; } var user=document.getElementById('user'); if(userValidator(user,"Not valid username")){ //return true; } var email=document.getElementById('email'); if(emailValidator(email,"Please enter a valid email address")){ //return true; } return false; }function nameValidator(name, nmsg) { var nameexp= /^[a-zA-Z]{6,15}$/; if(name.value.match(nameexp)){ return true;} else{ alert(nmsg); name.select(); return false; } } function addrValidator(address,amsg) { var addressexp= /^[a-zA-Z]{3,12} [a-zA-Z]{3,15} [0-9]{1,3}$/; if (address.value.match(addressexp)){ return true; } else{ alert(amsg); address.select(); return false;} }function zipValidator(zip,zmsg){var zipexp= /^[0-9]{1,5}$/;if (zip.value.match(zipexp)){ return true; } else{ alert(zmsg); zip.select(); return false;} }function userValidator(user,umsg){var userexp= /^[a-zA-Z]{6,8}$/;if (user.value.match(userexp)){ return true; } else{ alert(umsg); user.select(); return false;} }function emailValidator(email, msg) { var emailexp= /^[a-zA-z0-9\.\+\-]+@[a-zA-Z0-9\.\-]+\.[a-zA-Z0-9]{2,4}$/; if (email.value.match(emailexp)){ return true; }else{ alert(msg); email.select(); return false; } } </script><h1>2η άσκηση</h2><form method="post" action="get.php">First name: <input type="text" id='name'><br/>Address: <input type="text" id='address'></br>Zip Code: <input type="text" id='zip'><br/>State:<select name="state" value="Please choose"><option value="000" selected="selected">Please choose:</option><option value="6">Greece</option><option value="5">Germany</option><option value="4">Greenland</option></select><br/>Username(6-8 characters):<input type="text" id='user'><br/>Email:<input type="text" id='email'><br/><input type='button' onclick="return formValidator()" value="Check form"/></form></p></body></html>και η ερώτησή μου είναι γιατί βάζοντας έγκυρα στοιχεία δεν με ανακατευθύνει στο get.php(πρόκειται για ένα απλό αρχείο php που εμφανίζει μήνυμα επιτυχούς εισαγωγής στοιχείων)
nucleus Μάϊος 28, 2012 #2 Μάϊος 28, 2012 όχι στο on click το validation αλλά στο onsubmit της φόρμαςonsubmit="formValidator(this);"
theoamd Μάϊος 28, 2012 Author #3 Μάϊος 28, 2012 Με onsubmit θέλει και type="submit" που πάει να πει πως ακόμη και κενή να αφήσω τη φόρμα πατώντας submit θα με πάει στο get.php
Wizard! Μάϊος 28, 2012 #4 Μάϊος 28, 2012 και η ερώτησή μου είναι γιατί βάζοντας έγκυρα στοιχεία δεν με ανακατευθύνει στο get.php(πρόκειται για ένα απλό αρχείο php που εμφανίζει μήνυμα επιτυχούς εισαγωγής στοιχείων)Με μια γρήγορη ματιά, νομίζω ότι δε γυρνάς πουθενά true, οπότε το submit δεν εκτελείται ποτέ.Edit:Είχα κι ένα πρόχειρο κοντά μου... Οι έλεγχοι γίνονται με jquery.function formCheck() { var formOK = true; if ($("#my_text_field").val() == "") { $.StErrorPopup.buildPrompt($("#my_text_field"), "Please enter a value.") if (formOK) { scrollToElement("#my_text_field"); } formOK = false; } return formOK;}
theoamd Μάϊος 28, 2012 Author #5 Μάϊος 28, 2012 Τελικά επρόκειτο για λογικό λάθος. Στη formValidator, έπειτα από κάθε έλεγχο πρέπει να επιστρέφω false, οπότε αν χτυπήσει κάπου, να πεταχτεί το μήνυμα και να μην πάει παρακάτω και πριν το τέλος της συνάρτησης, έπρεπε να επιστρέψω true, καθώε επρόκειτο για σημείο στο οποίο θα φτάσει ΜΟΝΟ αν όλοι οι παραπάνω έλεγχοι είναι αληθείς. 9enx anyway παίδες ( [MENTION=173]Wizard![/MENTION] είμαι σε πολύ πρόιμο στάδιο για jqueries). Next step ==> Javascript + Ajax
Wizard! Μάϊος 28, 2012 #6 Μάϊος 28, 2012 [MENTION=173]Wizard![/MENTION] είμαι σε πολύ πρόιμο στάδιο για jqueries Μάλλον θα σε διευκολύνει. Δες το σαν εργαλείο
theoamd Μάϊος 31, 2012 Author #7 Μάϊος 31, 2012 Το νέο ερώτημα λοιπόν είναι το ακόλουθο :Έχω μια εφαρμογή αναζήτησης κάποιων διαθέσιμων βιβλίων(τα οποία τα τραβάω απο μια ΒΔ), όπου υπάρχει ένα txt hint το οποίο κατά την πληκτρολόγηση στην αναζήτηση εμφανίζει τα αντίστοιχα υπάρχοντα στη βάση.Για ένα πεδίο παίζει κανονικά(πχ για τίτλο), όμως αν προσθέσω και συγγραφέα(δηλαδή αναζήτηση με ajax(για το txt hint) και κάνω παράλληλη αναζήτηση το txt hint δε δουλεύει σωστα,δηλαδή υπάρχει περίπτωση να βγάλει 2 φορές το ίδιο βιβλίο.Πως θα διορθωθεί αυτό?
Wizard! Μάϊος 31, 2012 #8 Μάϊος 31, 2012 Εννοείς ότι ψάχνεις στη βάση αν το txt υπάρχει στο πεδίο title ή στο πεδίο author;Μήπως κάνεις κάποιο Union στα queries; Αν ναι, βάλε Distinct.
theoamd Μάϊος 31, 2012 Author #9 Μάϊος 31, 2012 Ουσιαστικά παίρνω μέσω js(και κάνοντας χρήση της onkeyup()) το περιεχόμενο του field(πχ τον τίτλο ενός βιβλίου) και ελέγχω αν υπάρχει κάτι αντίστοιχο στη βάση
Wizard! Μάϊος 31, 2012 #10 Μάϊος 31, 2012 Ναι, αυτό το κατάλαβα. Αυτό που δεν ξέρω είναι, σου έρχεται διπλό από τη βάση, ή το γράφει διπλό η js ρουτίνα σου; btw, δοκίμασε το autocomplete με jquery
theoamd Μάϊος 31, 2012 Author #11 Μάϊος 31, 2012 (υπάρχει περίπτωση που έρχεται διπλό, άλλη που έρχεται λάθος -πχ να πατήσω "L" και να επιστρέψει βιβλίο με εναρκτήριο γράμμα τίτλου "H" , κοκ)
Wizard! Μάϊος 31, 2012 #12 Μάϊος 31, 2012 Ναι, πρέπει να τα δεις χωριστά. Από τη βάση τι παίρνεις; xml; Είναι web service;Κατέβασε το fiddler
theoamd Μάϊος 31, 2012 Author #13 Μάϊος 31, 2012 xammp, οπότε είναι φτιαγμένη σε phpmyadmin(και κανονικοποιημένη)το εργαλείο που παραθέτεις είναι για web debugging?
Wizard! Μάϊος 31, 2012 #14 Μάϊος 31, 2012 Ναι. Σου δείχνει τι στέλνει και τι παίρνει ο browser. Οπότε, ότι δεδομένα έρχονται στο ajax μέσω webservice/webpage θα τα δεις ανοικτά.
nucleus Μάϊος 31, 2012 #19 Μάϊος 31, 2012 onkeyup έχει σημασία και το πιο control έχει focus.στο text change όχι.
theoamd Μάϊος 31, 2012 Author #20 Μάϊος 31, 2012 Σαν να ψιλοκατάλαβα, αλλά μήπως μπορείς να γίνεις λίγο πιο συγκεκριμένος?ΥΓ: μέχρι στιγμής βρήκα τρόπο να δουλεύει και για 3 πεδία, αλλά οχι παράλληλα(πχ αν έχω τίτλο "αβγ" και συγγραφέα "δεζ", δουλεύει αν έχω δώσει το "αβγ" σαν τίτλο και πχ κάνω keyup στο "δ" στο πεδίο του συγγραφέα,αλλά δεν δουλεύει αν το αφήσω σαν "αβ" πχ το πεδίο του τίτλου και πχ "δ" το πεδίο του συγγραφέα)
Recommended Posts
Archived
This topic is now archived and is closed to further replies.