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 που εμφανίζει μήνυμα επιτυχούς εισαγωγής στοιχείων) Link to comment Share on other sites More sharing options...
nucleus Μάϊος 28, 2012 #2 Κοινοποίηση Μάϊος 28, 2012 όχι στο on click το validation αλλά στο onsubmit της φόρμαςonsubmit="formValidator(this);" Link to comment Share on other sites More sharing options...
theoamd Μάϊος 28, 2012 Author #3 Κοινοποίηση Μάϊος 28, 2012 Με onsubmit θέλει και type="submit" που πάει να πει πως ακόμη και κενή να αφήσω τη φόρμα πατώντας submit θα με πάει στο get.php Link to comment Share on other sites More sharing options...
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;} Link to comment Share on other sites More sharing options...
theoamd Μάϊος 28, 2012 Author #5 Κοινοποίηση Μάϊος 28, 2012 Τελικά επρόκειτο για λογικό λάθος. Στη formValidator, έπειτα από κάθε έλεγχο πρέπει να επιστρέφω false, οπότε αν χτυπήσει κάπου, να πεταχτεί το μήνυμα και να μην πάει παρακάτω και πριν το τέλος της συνάρτησης, έπρεπε να επιστρέψω true, καθώε επρόκειτο για σημείο στο οποίο θα φτάσει ΜΟΝΟ αν όλοι οι παραπάνω έλεγχοι είναι αληθείς. 9enx anyway παίδες ( [MENTION=173]Wizard![/MENTION] είμαι σε πολύ πρόιμο στάδιο για jqueries). Next step ==> Javascript + Ajax Link to comment Share on other sites More sharing options...
Wizard! Μάϊος 28, 2012 #6 Κοινοποίηση Μάϊος 28, 2012 [MENTION=173]Wizard![/MENTION] είμαι σε πολύ πρόιμο στάδιο για jqueries Μάλλον θα σε διευκολύνει. Δες το σαν εργαλείο Link to comment Share on other sites More sharing options...
theoamd Μάϊος 31, 2012 Author #7 Κοινοποίηση Μάϊος 31, 2012 Το νέο ερώτημα λοιπόν είναι το ακόλουθο :Έχω μια εφαρμογή αναζήτησης κάποιων διαθέσιμων βιβλίων(τα οποία τα τραβάω απο μια ΒΔ), όπου υπάρχει ένα txt hint το οποίο κατά την πληκτρολόγηση στην αναζήτηση εμφανίζει τα αντίστοιχα υπάρχοντα στη βάση.Για ένα πεδίο παίζει κανονικά(πχ για τίτλο), όμως αν προσθέσω και συγγραφέα(δηλαδή αναζήτηση με ajax(για το txt hint) και κάνω παράλληλη αναζήτηση το txt hint δε δουλεύει σωστα,δηλαδή υπάρχει περίπτωση να βγάλει 2 φορές το ίδιο βιβλίο.Πως θα διορθωθεί αυτό? Link to comment Share on other sites More sharing options...
Wizard! Μάϊος 31, 2012 #8 Κοινοποίηση Μάϊος 31, 2012 Εννοείς ότι ψάχνεις στη βάση αν το txt υπάρχει στο πεδίο title ή στο πεδίο author;Μήπως κάνεις κάποιο Union στα queries; Αν ναι, βάλε Distinct. Link to comment Share on other sites More sharing options...
theoamd Μάϊος 31, 2012 Author #9 Κοινοποίηση Μάϊος 31, 2012 Ουσιαστικά παίρνω μέσω js(και κάνοντας χρήση της onkeyup()) το περιεχόμενο του field(πχ τον τίτλο ενός βιβλίου) και ελέγχω αν υπάρχει κάτι αντίστοιχο στη βάση Link to comment Share on other sites More sharing options...
Wizard! Μάϊος 31, 2012 #10 Κοινοποίηση Μάϊος 31, 2012 Ναι, αυτό το κατάλαβα. Αυτό που δεν ξέρω είναι, σου έρχεται διπλό από τη βάση, ή το γράφει διπλό η js ρουτίνα σου; btw, δοκίμασε το autocomplete με jquery Link to comment Share on other sites More sharing options...
theoamd Μάϊος 31, 2012 Author #11 Κοινοποίηση Μάϊος 31, 2012 (υπάρχει περίπτωση που έρχεται διπλό, άλλη που έρχεται λάθος -πχ να πατήσω "L" και να επιστρέψει βιβλίο με εναρκτήριο γράμμα τίτλου "H" , κοκ) Link to comment Share on other sites More sharing options...
Wizard! Μάϊος 31, 2012 #12 Κοινοποίηση Μάϊος 31, 2012 Ναι, πρέπει να τα δεις χωριστά. Από τη βάση τι παίρνεις; xml; Είναι web service;Κατέβασε το fiddler Link to comment Share on other sites More sharing options...
theoamd Μάϊος 31, 2012 Author #13 Κοινοποίηση Μάϊος 31, 2012 xammp, οπότε είναι φτιαγμένη σε phpmyadmin(και κανονικοποιημένη)το εργαλείο που παραθέτεις είναι για web debugging? Link to comment Share on other sites More sharing options...
Wizard! Μάϊος 31, 2012 #14 Κοινοποίηση Μάϊος 31, 2012 Ναι. Σου δείχνει τι στέλνει και τι παίρνει ο browser. Οπότε, ότι δεδομένα έρχονται στο ajax μέσω webservice/webpage θα τα δεις ανοικτά. Link to comment Share on other sites More sharing options...
nucleus Μάϊος 31, 2012 #15 Κοινοποίηση Μάϊος 31, 2012 Στην βάση κάνεις query με LIKE ή χρησιμοποιείς ισότητα? Link to comment Share on other sites More sharing options...
theoamd Μάϊος 31, 2012 Author #16 Κοινοποίηση Μάϊος 31, 2012 query με like Link to comment Share on other sites More sharing options...
nucleus Μάϊος 31, 2012 #17 Κοινοποίηση Μάϊος 31, 2012 Δεν δοκιμάζεις με onChange event στο text field? Link to comment Share on other sites More sharing options...
theoamd Μάϊος 31, 2012 Author #18 Κοινοποίηση Μάϊος 31, 2012 Το ίδιο δεν θα είναι με το onkeyup που έχω ήδη? Link to comment Share on other sites More sharing options...
nucleus Μάϊος 31, 2012 #19 Κοινοποίηση Μάϊος 31, 2012 onkeyup έχει σημασία και το πιο control έχει focus.στο text change όχι. Link to comment Share on other sites More sharing options...
theoamd Μάϊος 31, 2012 Author #20 Κοινοποίηση Μάϊος 31, 2012 Σαν να ψιλοκατάλαβα, αλλά μήπως μπορείς να γίνεις λίγο πιο συγκεκριμένος?ΥΓ: μέχρι στιγμής βρήκα τρόπο να δουλεύει και για 3 πεδία, αλλά οχι παράλληλα(πχ αν έχω τίτλο "αβγ" και συγγραφέα "δεζ", δουλεύει αν έχω δώσει το "αβγ" σαν τίτλο και πχ κάνω keyup στο "δ" στο πεδίο του συγγραφέα,αλλά δεν δουλεύει αν το αφήσω σαν "αβ" πχ το πεδίο του τίτλου και πχ "δ" το πεδίο του συγγραφέα) Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.