• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[JQUERY] Jquery - Form Felder prüfen ob gefüllt sind oder nicht (value)

LikeStar

New member
Hallo,
habe ein Code geschrieben. Es funktioniert. Aber wenn alle Felder leer sind,
führt er die Aktionen 4 Mal aus.

Wie kann ich es machen, dass er beim 1. Mal feststellen, die anderen Aktionen nicht mehr durchführt?
HTML:
 jQuery(document).ready(function(){	
     jQuery('#sub').click(function(){
       if($.trim($('#eins').val()) == ''){
         jQuery('#done').delay(600).fadeToggle( "slow", "linear");
		 jQuery('#done').delay(3500).fadeToggle( "slow", "linear");
	   }
       if($.trim($('#zwei').val()) == ''){
         jQuery('#done').delay(600).fadeToggle( "slow", "linear");
		 jQuery('#done').delay(3500).fadeToggle( "slow", "linear");
	   }
       if($.trim($('#drei').val()) == ''){
         jQuery('#done').delay(600).fadeToggle( "slow", "linear");
		 jQuery('#done').delay(3500).fadeToggle( "slow", "linear");
	   }
       if($.trim($('#vier').val()) == ''){
         jQuery('#done').delay(600).fadeToggle( "slow", "linear");
		 jQuery('#done').delay(3500).fadeToggle( "slow", "linear");
	   }
  });
});
 
Zuletzt bearbeitet:
Was willst du denn genau wissen?
#

Habe ein Code geschrieben. Es funktioniert. Aber wenn alle Felder leer sind,
führt er die Aktionen 4 Mal aus.

Wie kann ich es machen, dass er beim 1. Mal feststellen, die anderen Aktionen nicht mehr durchführt?
HTML:
 jQuery(document).ready(function(){	
     jQuery('#sub').click(function(){
       if($.trim($('#eins').val()) == ''){
         jQuery('#done').delay(600).fadeToggle( "slow", "linear");
		 jQuery('#done').delay(3500).fadeToggle( "slow", "linear");
	   }
       if($.trim($('#zwei').val()) == ''){
         jQuery('#done').delay(600).fadeToggle( "slow", "linear");
		 jQuery('#done').delay(3500).fadeToggle( "slow", "linear");
	   }
       if($.trim($('#drei').val()) == ''){
         jQuery('#done').delay(600).fadeToggle( "slow", "linear");
		 jQuery('#done').delay(3500).fadeToggle( "slow", "linear");
	   }
       if($.trim($('#vier').val()) == ''){
         jQuery('#done').delay(600).fadeToggle( "slow", "linear");
		 jQuery('#done').delay(3500).fadeToggle( "slow", "linear");
	   }
  });
});
 
Zuletzt bearbeitet:
Dafür musst du sie ineinander verschachteln, weil ja der zweite Code abhängig sein soll vom ersten und der dritte vom zweiten usw.. Also jeweils immer in den done-Parameter den Aufruf der nächsten Funktion setzen, soweit Bedingung zutrifft.
 
Um es sauber zu machen würde ich ganz einfach ein Flag setzen und dieses abprüfen.
Abgesehen davon kann man die 4 if's mit OR verknüfpen

Code:
 jQuery(document).ready(function(){	

     var myError = 0;

     jQuery('#sub').click(function(){
       if($.trim($('#eins').val()) == '') myError = 1;
       if($.trim($('#zwei').val()) == '') myError = 1;
       if($.trim($('#drei').val()) == '') myError = 1;
       if($.trim($('#vier').val()) == '') myError = 1;
      if ( myError == 1 ) {
         jQuery('#done').delay(600).fadeToggle( "slow", "linear");
	 jQuery('#done').delay(3500).fadeToggle( "slow", "linear");
     }
  });
});
 
Um es sauber zu machen würde ich ganz einfach ein Flag setzen und dieses abprüfen.
Abgesehen davon kann man die 4 if's mit OR verknüfpen

Code:
 jQuery(document).ready(function(){	

     var myError = 0;

     jQuery('#sub').click(function(){
       if($.trim($('#eins').val()) == '') myError = 1;
       if($.trim($('#zwei').val()) == '') myError = 1;
       if($.trim($('#drei').val()) == '') myError = 1;
       if($.trim($('#vier').val()) == '') myError = 1;
      if ( myError == 1 ) {
         jQuery('#done').delay(600).fadeToggle( "slow", "linear");
	 jQuery('#done').delay(3500).fadeToggle( "slow", "linear");
     }
  });
});

Hey. :)

Dein Code ist sehr interessant! :) Habe es sogar teilweise verstanden.
Trotzdem führt er die Aktion fadeToggle aus, egal ob die Felder gefüllt sind oder nicht.

Du hast da bewusst einen Fehler eingebaut? Richtig?



Dafür musst du sie ineinander verschachteln, weil ja der zweite Code abhängig sein soll vom ersten und der dritte vom zweiten usw.. Also jeweils immer in den done-Parameter den Aufruf der nächsten Funktion setzen, soweit Bedingung zutrifft.

Kannst du uns wenigstens ein Beispiel zeigen?

Danke. :)
 
Zuletzt bearbeitet:
Dann ist entweder ein Feld von dir nicht leer oder das Fade wird vlt. noch von wo anders aufgerufen.
Hier nochmal ein erweiterert Code zum debuggen :)

Code:
 jQuery(document).ready(function(){	

     jQuery('#sub').click(function(){
       var myError = '';

       if($.trim($('#eins').val()) == '') myError += 'Feld 1 ist leer. ';
       if($.trim($('#zwei').val()) == '') myError += 'Feld 2 ist leer. ';
       if($.trim($('#drei').val()) == '') myError += 'Feld 3 ist leer. ';
       if($.trim($('#vier').val()) == '') myError += 'Feld 4 ist leer. ';
      if ( myError != '' ) {
         alert(myError);
         jQuery('#done').delay(600).fadeToggle( "slow", "linear");
	 jQuery('#done').delay(3500).fadeToggle( "slow", "linear");
     }
  });
});
 
Zuletzt bearbeitet:
@fadattf

Mist. Ich habe mich missverständlich ausgedrückt.

Es soll nicht geprüft werden ob die Felder leer sind, sondern ob die Felder gefüllt sind.

HTML
HTML:
    <input name="name" type="text" class="field" id="eins" value="Full Name" onfocus="if(this.value == this.defaultValue) this.value = '';" onblur="if(!this.value) this.value = this.defaultValue;" />

In dem Fall: value="Full Name"
Full Name darf nicht in dem Feld stehen.

:)

Edit: Möchte dich keines Falls angreifen, aber dein Code führt immer die Aktion aus, egal ob gefüllt oder nicht =/
Ich schau noch mal.

Edit: Dein zweiter Code funktioniert schon eher. Allerdings, möchte ich es umgekehrt haben.
#eins darf nicht gefüllt werden mit: "Full Name"
 
Zuletzt bearbeitet:
Okay, dass ist etwas anderes.

Ich hab dir im PHP Forum geschrieben, dass es wohl besser wäre, wenn du "Placeholder" verwenden würdest.
Dann wäre alles etwas runter.
Denn im Endeffekt soll es ja darum gehen, dass etwas ausgefüllt ist (und nicht dieDefaultwerte drinnen stehen), oder?

Ich habe den Code nicht getestet, kann schon sein, dass da vlt. noch ein Denkfehler drinnen ist ;) hab damit also kein Problem wenn du sagst es passt nicht ;)
In meinem Code wird das Fade ausgeführt sobald ein Feld leer geblieben ist.
 
Zuletzt bearbeitet:
Deinen Code benutze ich gerade. Aber aus irgend einem Grund klappt das nicht. Ich prüfe das nochmal.

Edit:

Haha.

nach dem ich placeholder mit eingebaut habe, fehlte natürlich noch das value=""

Jetzt funktioniert's!
 
Zuletzt bearbeitet:
Dein alert funktioniert tadellos ; - )

erst Feld 1, dann Feld 2 usw.

Alert gibt die Felder aus, die leer sind.
 
und wann soll das fadeToggle ausgeführt werden?
Wenn alle Felder befüllt sind oder alle leer sind oder sobald eines leer ist (das sollte ja jetzt der Fall sein)?
 
Er führt erst fadeToggle aus, wenn alle 3 Felder leer stehen.

Wenn 2 Felder gefüllt werden und 1 Feld leer steht, führt er auch das fadeToggle aus.
 
Ja, genau so ist mein Code auch gedacht.
Bitte sag mir wann das fadeToggle ausgeführt werden soll, dann ändere ich den Code ab.
 
Danke Dir! Ich habe jedoch ein ganz anderes Problem.

Kann ich PHP mit jQuery mischen?

Ich habe nämlich mit jQuery geprüft ob die Felder gefüllt sind oder nicht. Sind die nicht gefüllt, erscheint mit
fadeToogle mein Fenster. Der Nutzer wird darauf hingewiesen, dass die Felder nicht gefüllt sind.

Gleichzeitig prüfe ich mit <form action=contact.php method=post" > die Felder. Als Aktion habe ich allerdings
nichts stehen lassen, da ja jQuery die Arbeit erledigt.

Sind die Felder gefüllt, führt PHP eine Aktion durch, und zwar sendet er alle Information an die Empfänger Email
und dann wird man mit header('Location: http://www.musterseite.de'); verbunden.

-.-
 
Hallo!

Also ja, du kannst PHP & jQuery "mischen" (natürlich nicht programmiertechnisch, aber du kannst alles in einer Datei belassen).

So wie ich es sehe machst du jetzt eigentlich alles richtig.
Der korrekte Ablauf wäre wie folgt:
- HTML Formular mit jQuery Überprüfung genierieren. Formular verweist auf contact.php
- in contact.php die Variablen nochmal Serverseitig prüfen, email abschicken sowie ein redirect mit header('Location.... (das php script würde ich nochmal checken lassen - das sieht so aus als wären da einige Schwachstellen drinnen)

btw: die alerts kannst du natürlich wieder ausbauen bzw den Code von weiter oben nehmen.
 
Zuletzt bearbeitet:
Redet ihr eigentlich immer noch über den Code aus #9? In diesem ist nämlich die Variable "myError" (warum eigentlich so ein so seltsamer Variablenname? Für was das "my"?) im falschen Scope bzw. wird nicht zurückgesetzt. So akkumulieren sich die Fehlermeldungen immer mehr. Die Variable muss im click-Eventlistener deklariert werden.
 
Zurück
Oben