jQuery submit form ohne nachladen Seite
Ich bin nicht sehr vertraut mit jQuery. Ich bin versucht, ein Formular, das eingereicht wird, die im hintergrund ohne Neuladen der Seite.
Habe ich ein verstecktes div, das zeigt und verbirgt Sie auf klicken Sie auf, innerhalb des div gibt es ein Formular.
Habe ich zwei Probleme:
1) Wenn Sie die Formular-Validierung fehl, wird das Formular trotzdem abgeschickt. Ich versuchte, die Validierung und die übermittlung von codes in der Bedingung if(validation == valid) { $.ajax.... }
aber es funktioniert nicht richtig.
2) Nachdem das Formular übermittelt wird, wird das div automatisch ausgeblendet, so erfolgreich die Nachricht kann nicht gesehen werden.
Hier der code:
$().ready(function() {
//Validate the form when it is submitted, using validation plugin.
var validator = $("#contactform").validate({
errorContainer: container,
errorLabelContainer: $(),
onkeyup: false,
onclick: false,
onfocusout: false,
errorPlacement: function (error, element) {
error.insertBefore(element);
}
});
});
$(function() {
//This submits a form
$('input[type=submit]').click(function() {
$.ajax({
type: "POST",
url: "contact.php",
data: $("#contactform").serialize(),
beforeSend: function() {
$('#result').html('<img src="loading.gif" />');
},
success: function(data) {
$('#result').html(data);
}
})
})
})
//This shows and hides div onclick
$(document).ready(function(){
$(".slidingDiv").hide();
$(".show_hide").show();
$('.show_hide').click(function(){
$(".slidingDiv").slideToggle();
});
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anstatt binden des click-Ereignisses (
input[type=submit]
) sollten Sie binden an diesubmit
- Ereignis für das Formular.Ich bin auch nicht sicher über die Validierung. Wenn es läuft asynchron, ein Rückruf ist erforderlich. Wenn es läuft synchron, Wann wird es ausgelöst? Es scheint, wie es getan werden soll, wenn das Formular abgeschickt wird, es sei denn, Ihre Validierung plugin macht das auf seine eigene:
Mit
e.preventDefault
verhindern wird neu geladen und sollte ermöglichen, Ihren Erfolg div angezeigt.1) Verwenden Sie
event.preventDefault();
zu halten die form der Einreichung-http://api.jquery.com/event.preventDefault/
2) Es ist nicht alles in der vorgegebenen Skript, das führt zu einer #zu verstecken, aber Sie können versuchen
$('#result').show()
und sehen, ob das bringt es zurückBitte prüfen Sie, welche jQuery-version verwendest du denn nach jQuery 1.8.2 "Erfolg" - Funktion von jQuery, Ajax ist veraltet.
Verwenden
e.preventDefault()
zu verhindern eigentlichen submit-Ereignis.