ok, Problem erkannt. Man sollte in JQ eine Funktion nicht innerhalb von
$(document).ready(function() {
einfügen, sonst klappt es nicht. Jetzt scheint es jedenfalls zu funktionieren. Auch der focus() wird jetzt gesetzt.
Doppelte Einträge im IE9
Einklappen
X
-
wenn ich aber direkt auf speichern klicke, funktioniert es aber. Nur wenn ich Return klicke, scheint es als würde er onsubmit ignorieren. Ich habe spasseshalber auch noch ein alert ganz oben in der Funktion eingefügt. Wenigstens dieser müsste aufgerufen werden.
Einen Kommentar schreiben:
-
Ich bin zumindest kein Profi.Zitat von joextra Beitrag anzeigend.h. du kennst dich mit JQ nicht aus?
Wenn ein onsubmit-Handler auf dem Formular liegt und selbiger ein false zurückliefert, so wird auch nichts beim Drücken der Return-Taste abgesendet. Selbst im IE9. Also muss aus irgendeinem Grund der return-Wert von check() nicht stimmen.Zitat von joextra Beitrag anzeigenDas Problem hierbei ist aber, das wenn ich Return drücke die Form submittet wird, ohne Überprüfung. Irgend eine Idee wie das vermeiden kann?
Gruß
Peter
Einen Kommentar schreiben:
-
d.h. du kennst dich mit JQ nicht aus? Im Prinzip ist es ja aber kein Problem von JQ sondern vom IE. Ich glaube das es einen Zusammenhang mit demim formular gibt.HTML-Code:onSubmit="return false;"
Also, bin jetzt etwas weiter. Wenn ich die ganze Überprüfung in eine funktion einbette und diese dann mit den onSubmit aufrufe, funktioniert es. Das Problem hierbei ist aber, das wenn ich Return drücke die Form submittet wird, ohne Überprüfung. Irgend eine Idee wie das vermeiden kann?HTML-Code:onSubmit="return check()"
Zuletzt geändert von joextra; 13.01.2012, 15:33.
Einen Kommentar schreiben:
-
Sorry, dann bin ich raus.Zitat von joextra Beitrag anzeigenUnd ja, es wird jQuery verwendet.
Peter
Einen Kommentar schreiben:
-
ok, hier der Code. Und ja, es wird jQuery verwendet.
JS:
Formular:Code:/*************************************** Register/Change Profile check ***************************************/ $('#saveProfile').click(function () { var id = $('input[name=id]'); var name = $('input[name=name]'); var surname = $('input[name=surname]'); var street = $('input[name=street]'); var zip = $('input[name=zip]'); var place = $('input[name=place]'); var email = $('input[name=email]'); var username = $('input[name=username]'); var password = $('input[name=password]'); var gender = $('input:radio[name=gender]:checked'); // Check if filled if(name.val() == '') { //error = true; name.css("border", highlight); name.focus(); return false; } else { name.css("border", deHighlight); } if(surname.val() == '') { //error = true; surname.css("border", highlight); surname.focus(); return false; } else { surname.css("border", deHighlight); } if(email.val() == '') { //error = true; email.css("border", highlight); email.focus(); return false; } else if(!emailReg.test(email.val())) { //error = true; alert("Falsches Email-Format."); email.css("border", highlight); email.focus(); return false; } else { email.css("border", deHighlight); } // check if email exists if(id.val() == "") { var data = 'email=' + email.val(); $.ajax({ url: "checkPostData.php", type: "GET", data: data, cache: false, traditional: true, async: false, success: function(result) { if(result == true) { error = true; alert("Diese Email existiert bereits."); email.css("border", highlight); email.focus(); } } }); } // for: check if email exists if(error == true) { error = false; return false; } if(username.val() == '') { //error = true; username.css("border", highlight); username.focus(); return false; } else { username.css("border", deHighlight); } // check if username exists if(id.val() == "") { var data = 'username=' + username.val(); $.ajax({ url: "checkPostData.php", type: "GET", data: data, cache: false, traditional: true, async: false, success: function(result) { if(result == true) { error = true; alert("Diese Benutzername ist bereits vergeben."); username.css("border", highlight); username.focus(); } } }); } // for: check if username exists if(error == true) { error = false; return false; } if(password.val() == '') { //error = true; password.css("border", highlight); password.focus(); return false; } else if(password.val().length < 6) { //error = true; alert("Das Passwort muss mind. 6 Zeichen lang sein."); password.css("border", highlight); password.focus(); return false; } else { password.css("border", deHighlight); } if(gender.val() != 'm' && gender.val() != 'f') { //error = true; $(".radio").css("color", "#CC0000"); return false; } else { $(".radio").css("color", "#888"); } if(error == true) { error = false; return false; } else { $("#registerForm").removeAttr("onsubmit"); pause(1000); $("#registerForm").submit(); return true; } }); // prevent Form to Submit when pressing Return $('#registerForm').bind('keydown',function(e){ if(e.which == 13){ //return false; $('#saveProfile').trigger('click'); } });
Was mir auch auf gefallen ist, ist das focus() im IE9 auch nicht funktioniert. Ich habe zwar diesen Workarround gefunden "setTimeout(function() { document.getElementById('myInput').focus(); }, 10);" aber das ist auch nicht das wahre.HTML-Code:<form name="registerForm" id="registerForm" action="index.php" method="post" onSubmit="return false;"> <input type="hidden" name="registerForm" value="true"> <input type="hidden" name="registeredSince" value="<?echo $registeredSince;?>"> <input type="hidden" name="id" value="<?echo $id;?>"> <div class="userData"> <p>Vorname*</p> <input type="text" name="name" value="<?echo $name;?>"> <p>Name*</p> <input type="text" name="surname" value="<?echo $surname;?>"> <p>Straße</p> <input type="text" name="street" value="<?echo $street;?>"> <div id="zip"> <p>PLZ</p> <input type="text" name="zip" value="<?echo $zip;?>" maxlength="5"> </div> <div id="place"> <p>Ort</p> <input type="text" name="city" value="<?echo $city;?>"> </div> </div> <div class="userData"> <p>Email*</p> <input type="text" name="email" value="<?echo $email;?>"> <p>Benutzername*</p> <input type="text" name="username" value="<?echo $username;?>"> <p>Passwort*</p> <input type="password" name="password" id="passwordLength" value="<?echo $password;?>"> <div style="float:left; width:100%;" class="radio"> <p><input type="radio" name="gender" value="m" <?if($gender == "m") { echo "checked"; }?>> männlich*</p> <p><input type="radio" name="gender" value="f" <?if($gender == "f") { echo "checked"; }?>> weiblich*</p> </div> <p>* = Pflichtfelder</p> <p> </p> <button onClick="openProfile();" class="buttonSpaceRight">SCHLIESSEN</button> <button id="saveProfile">SPEICHERN</button> </div> </form>
Zuletzt geändert von joextra; 13.01.2012, 11:36.
Einen Kommentar schreiben:
-
Hab ich mir fast gedacht.Zitat von joextra Beitrag anzeigentatsache. Ohne JS Funktioniert es.
Ohne Code muss ich raten. Und auch wenn das mit jQuery gemacht wurde.Zitat von joextra Beitrag anzeigenHmm, könnte es da an den ajax Funktionen liegen, mit denen ich überprüfe ob bestimmte Einträge vorhanden sind?
Peter
PS. Ich verschieb es dann mal ins richtige Forum.
Einen Kommentar schreiben:
-
Schmeiß doch mal spaßeshalber die JS-Überprüfung raus.
Peter
Einen Kommentar schreiben:
-
ja, das komplette Formular wird per JS überprüft. Normaler weise mach ich es mit PHP aber in diesem Fall sind Reloads unerwünscht (also so wenig wie möglich). Nur beim Submit (nach überprüfung per JS) wird die Seite neu geladen.
Einen Kommentar schreiben:
-
Hast du bei dem Formular irgendwas mit JavaScript gemacht?
Peter
Einen Kommentar schreiben:
-
ja, das habe ich mir auch gedacht. Aber an was kann es liegen? Problem ist auf jeden Fall der IE9. Das einfachste wäre, den IE9 im IE8 Kompatibilitätsmodus zu betreiben. Aber das ist keine schöne Lösung.
Einen Kommentar schreiben:
-
Sollte nicht. mysqli/php läuft serverseitig. Da spielt der Browser keine Rolle.Zitat von joextra Beitrag anzeigenGibt es vielleicht einen Bug zwischen mysqli & IE9?
Peter
Einen Kommentar schreiben:
-
Doppelte Einträge im IE9
Hallo,
ich bin mir nicht sicher ob das Thema hier richtig ist oder eher in "SQL / Datenbanken" gehört. Auf jeden Fall habe ich ein sehr komisches Problem. Ich habe ein Formular. Beim Submit wird der Inhalt in eine DB geschrieben. Soweit funktioniert alles Problemlos, nur beim IE9 werden die Einträge in der DB doppelt eingetragen. Beim IE8 (IE9 im IE8 Modus) & FF klappt es problem los. Der Insert wird nur ein mal aufgerufen. Das habe ich schon 10000x überprüft. Bei der Passworterstellung (die für das Formular verwendet wird) verwende ich eine Verschlüsselung bestehend aus md5 & Zufallszahl, so das sich der Schlüssel jedes mal ändert. Das komische dabei ist, das bei beiden Einträgen zwei verschiedene Passwörter drin stehen obwohl ja der Insert nur ein mal aufgerufen wird. Gibt es vielleicht einen Bug zwischen mysqli & IE9?Zuletzt geändert von joextra; 13.01.2012, 10:11.Stichworte: -
Einen Kommentar schreiben: