| 

.NET C# Java Javascript Exception

2
Hallo

Ich habe ein Formular welches per Ajax überprüft wird und dann bei Erfolg auf eine neue Seite leitet und sonst den Fehler ausgibt.

Im FireFox klappt es... im Safari und IE leider nicht???
Also beim Safari/IE leitet er sofort auf die Seite weiter auf die das Formular führen soll.

$("#submit").live("click", function() {
var titel = $('input[name=titel]');
$.post("/formData.php", {
titel: titel.val()
}, function(data) {
alert(titel);
return false;
}
});


Jemand eine Idee? :-(
21.12.2012
meone 99 1 6
meone 99 1 6
Aktuell bin ich bei dem Stand:

$("#form_anmeldung").bind("submit", function() {
var titel = $('input[name=titel]');
$.post('formData.php', {

titel: titel.val()
}, function(data) {
if (data == "<div class='form_check'></div>") {
alert("ja" + data);
$("submit").unbind('click');
$("submit").submit();
return true;
} else {
$('.form_check').html(data);
alert("ne" + data);
return false;
}
})

return false;
}); /* < Formular AJAX */

Die richtige Alert meldung kommt. Nur sendet er dann obwohl alert "ja..." erscheint nicht ab und bleibt auf der Seite
meone 21.12.2012
1 Antwort
0
Wenn es sich um einen Submit-Button handelt musst du das defaultverhalten noch verhindern:

event.preventDefault();


Beispiel:

$("#submit").live("click", function(event) {
var titel = $('input[name=titel]');
$.post("/formData.php", {
titel: titel.val()
}, function(data) {
event.preventDefault();
alert(titel);
return false;
}
});


Edit - Auf deinen 1. Kommentar bezogen:

$("#form_anmeldung").bind("submit", function(event) {
//...

event.preventDefault();
return false;
}); /* < Formular AJAX */


Edit - Auf deinen 3. Kommentar bezogen:

Ich denke so sollte es im Prinzip gehen:

var $form = $("#form_anmeldung");

$form.bind("submit", function(event) {

if($form.data('isValid') && $form.data('isValid') === true)
return true;

event.preventDefault();

var titel = $('input[name=titel]');
$.post('validiereForm.php', {
titel: titel.val()
}, function(data) {
if (data == "<div class='form_check'></div>") {
alert("ja" + data);
$form.data('isValid', true);
$form.submit();
return false;
}
else {
$('.form_check').html(data);
alert("ne" + data);
return false;
}
})
return false;
});
21.12.2012
Floyd 14,6k 3 9
Floyd 14,6k 3 9
function(data) {
if (data == "<div class='form_check'></div>") {
alert("ja" + data);
//$("submit").unbind('click');
//$("submit").submit();
return true;

} else {
$('.form_check').html(data);
alert("ne" + data);
event.preventDefault();
return false;
}


Formular wird abgeschickt, statt das "ne" kommt
meone 21.12.2012
event.preventDefault();
return false;

Wenn ich das ans Ende pack, wird das Formular ja nie abgeschickt. Also es soll schon abgeschickt werden.... außer in data ist mehr Inhalt als der Div, dann kommt der Fehler.
meone 21.12.2012
Wenn ich dich richtig verstanden habe, willst du das Formular ja auch garnicht abschicken, sondern die Daten manuell per AJAX an die Zeilseite übertragen.

preventDefault verhindert das Defaultverhalten des jeweiligen Steuerelements. Dh. bei Buttons das Default-Click-Verhalten, das Default-Hover-Verhalten etc. Und bei Formularen im Submit-Event das der Browser das Formular überträgt, denn dieses hast du ja bereits selbst per AJAX getan.
Floyd 23.12.2012
return false; versucht ins selbe Horn zu schlagen.

Hast um auf den vorherigen Kommentar zurück zu kommen, hast du beide Stellen geändert? "event" gibt es nämlich auch noch als globales Objekt.
Floyd 23.12.2012
Doch, das Formular möchte ich richtig abschicken. Also es soll vorerst mit Ajax überprüft werden und bei Fehlern eine Meldung per Ajax ausgeben auf der gleichen Seite.

Hier prüfe ich viele ganz bestimme Dinge, die ich mit einem fertigen Valdiator Skript nicht prüfen könnte.

Wenn alles okay ist, dann wird das Formular "richtig" abgeschickt, weil man auf eine ganz andere Seite soll, wo alles dann entgültig ausgewertet werden soll.

Das mit Event hatte ich an beide Stellen geändert.
meone 24.12.2012
Ok verstehe. Ich editiere mal meine Antwort.
Floyd 24.12.2012

Stelle deine Javascript-Frage jetzt!