rafinos Δημοσ. 12 Νοεμβρίου 2011 Δημοσ. 12 Νοεμβρίου 2011 Γεια σας μήπως γνωρίζετε πως γίνεται να καλέσω 2 συναρτήσεις στο OnSubmit μιας φόρμας;;; Δοκίμασα τον τρόπο OnSubmit="return func1(); func2()" αλλά τίποτα.... μήπως φταίει ότι και οι δύο έχουν return και αν έχει αποτέλεσμα η πρώτη true να μην μπαίνει στη δεύτερη;;;
_tasos Δημοσ. 12 Νοεμβρίου 2011 Δημοσ. 12 Νοεμβρίου 2011 Έτσι όπως το έχεις γράψει, ο κώδικας που εκτελείται είναι: > { return func1(); func2(); } Ανεξάρτητα από το τι επιστρέφει η func1() η func2() δεν θα εκτελεστεί ποτέ. Μπορείς να έχεις μία 3η συνάρτηση που να καλεί τις func1 και func2 και στο onSubmit να καλείς αυτήν. Επίσης μπορείς να κάνεις το εξής: > OnSubmit="return (func1() && func2());"
rafinos Δημοσ. 12 Νοεμβρίου 2011 Μέλος Δημοσ. 12 Νοεμβρίου 2011 Το είχα δοκιμάσει και έτσι όπως λες αλλά πάλι τίποτα.... Θα μπορούσες να μου κάνεις μια εικονική συνάρτηση η οποία να κάλει άλλες 2???
_tasos Δημοσ. 12 Νοεμβρίου 2011 Δημοσ. 12 Νοεμβρίου 2011 Μήπως η func2() έχει κάποιο bug; Αν έχει, τότε σταματάει η εκτέλεση της αλλά το submit γίνεται κανονικά. Όσο για την function που λες, αυτή απλά θα καλεί τις άλλες δύο. Φαντάζομαι πως θέλεις να χρησιμοποιήσεις το αποτέλεσμα των συναρτήσεων σου για να επιτρέψεις ή όχι το form submit, οπότε η function θα μπορούσε να είναι κάπως έτσι: > function submit_form() { var result1 = func1(); var result2 = func2(); return (result1 && result2); } function submit_form() { return ( func1() && func2()); } Και οι δύο παραλλαγές κάνουν το ίδιο πράγμα.
rafinos Δημοσ. 12 Νοεμβρίου 2011 Μέλος Δημοσ. 12 Νοεμβρίου 2011 Ούτε αυτό δουλεύει... Για την ακρίβεια δουλεύει μέχρι να γίνει η πρώτη συνάρτηση true μόλις γίνει true η πρώτη κατευθείαν το submit τρέχει οπότε θα πρέπει να κάνω κάποιον έλεγχο στη συνάρτηση που καλεί και τις δύο λογικά... έκανα αυτό: >function submit_form(){ cke=check_email(); ckb=check_birth(); if(cke==true && ckb==true) return true; else return false; } αλλά και πάλι κάνει ακριβώς το ίδιο παραθέτω και τις συναρτήσεις > //Έλεγχος για το email function check_email(){ var email=document.getElementById("email").value; var email2=document.getElementById("email2").value; var s=true; if (email=="") { alert("Δεν συμπληρώθηκε το Email!"); return false; } if (email2=="") { alert("Δεν συμπληρώθηκε η επιβεβαίωση του Email!"); return false; } if(email==email2){ if((email.indexof("@")==-1) || (email.indexof(".")==-1)){ alert("Η διεύθυνση Email δεν είναι έγκυρη!"); return false; } }else{ alert("Η διεύθυνση Email δεν ταιριάζει με την επιβεβαίωση!"); return false; } return true; } //Έλεγχος για την ημερομηνία γέννησης function check_birth(){ var day = document.getElementById("day").value; var month = document.getElementById("month").value; var year = document.getElementById("year").value; var now = new Date(); var theyear = now.getFullYear(); if(day == "" || month == "" || year == ""){ alert('Εισάγετε ημερομηνία!'); return false; } if(year < 1920 || year > theyear){ alert('Λάθος ημερομηνία'); return false; } if (month < 1 || month > 12){ alert('Λάθος ημερομηνία'); return false; } if (day < 1 || day > 31) { alert('Λάθος ημερομηνία'); return false; } if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31){ alert('Λάθος ημερομηνία'); return false; } if (month == 2){ var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); if (day > 29 || (day == 29 && !isleap)){ alert('Λάθος ημερομηνία'); return false; } } return true; } Μήπως υπάρχει τρόπος το alert κάθε συνάρτησεις να βγαίνει απευθείας χωρίς το submit????
_tasos Δημοσ. 12 Νοεμβρίου 2011 Δημοσ. 12 Νοεμβρίου 2011 Στην check_email χρησιμοποιείς την indexof(...). Πρέπει να τη γράψεις indexOf(...). Η javascript είναι case sensitive. Επειδή μάλλον δεν έχεις κάποιο tool για να κάνεις debugging τον κώδικα σου, θα σου πρότεινα το Web Developer addon (σε Firefox) όπου σου δείχνει τα javascript errors και το firebug (επίσης FF) για να μπορείς να κάνεις debugging τον κώδικα σου. Edit: Μήπως υπάρχει τρόπος το alert κάθε συνάρτησεις να βγαίνει απευθείας χωρίς το submit???? Γίνεται, στο input που είναι το email μπορείς να γράψεις <input id="email" type="text" onblur="javascript:check_email();" />. Το onblur είναι το event που τρέχει όταν ένα element χάνει το focus του. Σκέψου όμως πως έτσι θα πετάγονται διάφορα alert και ο χρήστης θα δυσκολεύεται να γράψει στη φόρμα. Για form validation υπάρχουν τρόποι αρκετοί και πολύ πιο όμορφοι από το alert. Κοίτα λίγο τη jQuery και το validation plugin της.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα