Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας μήπως γνωρίζετε πως γίνεται να καλέσω 2 συναρτήσεις στο OnSubmit μιας φόρμας;;;

 

Δοκίμασα τον τρόπο OnSubmit="return func1(); func2()" αλλά τίποτα....

μήπως φταίει ότι και οι δύο έχουν return και αν έχει αποτέλεσμα η πρώτη true να μην μπαίνει στη δεύτερη;;;

Δημοσ.

Έτσι όπως το έχεις γράψει, ο κώδικας που εκτελείται είναι:

 

>
{
 return func1();
 func2();
}

 

Ανεξάρτητα από το τι επιστρέφει η func1() η func2() δεν θα εκτελεστεί ποτέ.

Μπορείς να έχεις μία 3η συνάρτηση που να καλεί τις func1 και func2 και στο onSubmit να καλείς αυτήν.

Επίσης μπορείς να κάνεις το εξής:

 

 

>
OnSubmit="return (func1() && func2());"

Δημοσ.

Το είχα δοκιμάσει και έτσι όπως λες αλλά πάλι τίποτα.... :(

 

Θα μπορούσες να μου κάνεις μια εικονική συνάρτηση η οποία να κάλει άλλες 2???

Δημοσ.

Μήπως η 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());
}

 

Και οι δύο παραλλαγές κάνουν το ίδιο πράγμα.

Δημοσ.

Ούτε αυτό δουλεύει...

Για την ακρίβεια δουλεύει μέχρι να γίνει η πρώτη συνάρτηση 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????

Δημοσ.

Στην 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 της.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...