[jQuery] Prüfen "is.Checked"

arraybreak

Erfahrenes Mitglied
Tag zusammen,

ich bin gerade ein wenig ratlos, bin schon seit stunden bei dem Problem und finde keine Lösung :(

Also ich habe ein Kontaktformular, mit jQuery prüft ich vorher ab alle Felder eingetragen sind und dann wird es zu .PHP übergeben.

Ich habe eine Funktion eingebaut dass user ermöglicht eine Kopie an sich zu schicken, und da ist mein Problem:

Hier ist meine Kontrolle und Übergabe an PHP:

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

	$('#contactpro').submit(function(){

		var action = $(this).attr('action');		
		
		// Fetches the data from the fields
		var name = $('input[name=name]');
		var email = $('input[name=email]');
		var website = $('input[name=website]');
		var subject = $('select[name=subject]');
		var message = $('textarea[name=message]');
		var captcha = $('input[name=captcha]');

		// The function checks whether the fields are filled in
		// If empty, then it marks the fields
		if (name.val()=='') {
			name.addClass('hightlight');
			return false;
		} else name.removeClass('hightlight');

		if (email.val()=='') {
			email.addClass('hightlight');
			return false;
		} else email.removeClass('hightlight');

		if (subject.val()=='') {
			subject.addClass('hightlight');
			return false;
		} else subject.removeClass('hightlight');
		
		if (message.val()=='') {
			message.addClass('hightlight');
			return false;
		} else message.removeClass('hightlight');

		if (captcha.val()=='') {
			captcha.addClass('hightlight');
			return false;
		} else captcha.removeClass('hightlight');

				
		$("#comment").fadeIn(500,function() {
		$('#comment').hide();

 		$('#submit')
			.after('<img src="./images/ajax-loader.gif" class="loader" />')
			.attr('disabled',false);

		$.post(action, {
			name: $('#name').val(),
			email: $('#email').val(),
			website: $('#website').val(),
			subject: $('#subject').val(),
			message: $('#message').val(),

			cc: $('#cc').is(':checked').val(), 	
	},
				
		// If everything is OK, the success message
		function(data){
			document.getElementById('comment').innerHTML = data;
			$('#comment').delay(300).fadeIn('slow');
			$('#contactpro img.loader').fadeOut('slow',function(){$(this).remove()});
			
			$('#submit').removeAttr('disabled');
			if(data.match('success') != null) $('#contactpro').slideToggle(500);
		  }
	    );

	  });

	  return false;

  });

});

Also bei "$.post(action, {......"

Soll er den wert nur übergeben wenn es auch angeklickt wurde, ich habe es jetzt so probiert wie es auch drin steht:
Code:
cc: $('#cc').is(':checked').val(),

und hier mein input:
HTML:
<input type="checkbox" id="cc" name="cc" value="1" />

Wenn ich die Zeile so abändere:
Code:
cc: $('#cc').val("1")
Dann wird es auch ordnungsgemäß verschickt ja nach angekreuzt oder nicht, aber dann hat er irgend wie Probleme mit dem unteren Teil, und die Erfolgsreichsmeldung erscheint im neuem Fenster anstatt in dem Formular.

Weiß jemand wo der Fehler ist? Ich habe schon vieles ausprobiert aber irgend wie scheint es nicht ganz zu funktionieren :(
 
Zuletzt bearbeitet:
heyhey arraybreak!
das funktioniert nicht, da $('#cc').is(':checked') einfach den wert true oder false zurück gibt.
Du solltest eine Abfrage machen und dies ist, dadurch das es als Objekt geschrieben wurde,
soweit ich das weiß, nur mit der konditionalen Schreibform des If`s möglich.

Mit der Zeile sollte es funktionieren:
Code:
cc : $('.cc').is(':checked')===true ? $('.cc').val() : ""

Gruß!
 
Es funktioniert :D Danke dir.
Kannst du eventuell deine Zeile nochmal kurz in Worte fassen? Damit ich es beim nächsten mal auch ohne Hilfe schaffe :)
 
nü klar!

Code:
$('.cc').is(':checked')===true ? $('.cc').val() : ""

ist nichts anderes als:

Code:
if($('.cc').is(':checked')===true){
      $('.cc').val();
}
else{
     "";
}

Das Wichtigste ist erstmal, dass du verstehst, dass $('.cc').is(':checked') nicht überprüft und dann etwas macht, sondern dass es lediglich dir zurückgibt ob checked ist oder nicht.
Wenn die Box angehakt ist, liefert es ein true zurück und falls nicht ein false.
Daraufin musst du eine Abfrage mit If starten...
Aber da du in einem Objekt, dass so definiert wird, nicht einfach ein If schreiben kannst
- zumindest hätte ich jetzt auch keine andere Lösung -
musst du die "Kurzschreibversion" der If-Abfrage nehmen.
Diese "Kurzschreibversion" wird conditional genannt.

Google einfach mal nach "javascript conditional".
Das Problem ist nur, dass es nicht besonders hüpsch zu lesen ist.

Gruß und gut Nacht ;)
 
habs jetzt mal ausprobiert...
Code:
if($('.cc').is(':checked')){...
geht genauso wie
Code:
if($('.cc').is(':checked')===true){...
Wusst ich nicht, ändert aber nichts an der Schreibweise die hierfür nötig war.

Gruß!
 
Danke für die Erklärung, Top! ;)
Habe nur nicht verstanden was du mit deinem 2ten Beispiel zeigen wolltest, in einem Objekt kann ich ja kein "if" verwenden oder?
 

Neue Beiträge

Zurück