Die Formularvalidierung funktioniert gut, wenn Sie also die E-Mail-Eingabe leer und HIT senden ONCE, wird es den Fehler msg werfen . Aber wenn Sie das E-Mail-Feld [input] ausfüllen, musste ich zweimal auf "submitBtn" tippen, manchmal sogar noch mehr, um das Ergebnis tatsächlich anzuzeigen.Ich musste mehr als einmal auf Senden Schaltfläche drücken, um das Formular zu arbeiten, (Ergebnis laden in colorbox Popup)
so ist dies das Skript:
$('#RetrieveQuote2').validate({
rules: {
email: {
required: true,
email: true
}
},
errorPlacement: function(error, element) {
error.insertBefore(element);
},
submitHandler: function() {
$('input#submitBtn').bind('click', function() {
var content = $("input#email").val();
if (content == "[email protected]") {
$('.quotenotfound').show();
return false;
} else {
$('form#RetrieveQuote2').submit();
formValidationSubmitted = true;
if (!$('#RetrieveQuote2').valid()) {
$('.errorMessage').show();
}
$("input#submitBtn").colorbox({
href: function() {
var url = $(this).parents('form').attr('action');
var ser = $(this).parents('form').serialize(); //alert(url+'?'+ser);
return url + '?' + ser;
},
innerWidth: "780",
innerHeight: "450",
iframe: true
});
} // end of else
});
} // end of submitHandler
});
und unten ist das HTML-Formular:
<form name="RetrieveQuote2" id="RetrieveQuote2" action="overlays/quotelist.php" method="get">
<fieldset class="cf">
<legend>email</legend>
<label>Your Email</label>
<input type="text" name="email" id="email" value="" maxlength="25"/>
<div class="submit">
<input type="submit" name="RetrieveQuote" class="rqSubmitBtn" id="submitBtn" value="SUBMIT" />
</div>
</fieldset>
</form>
Das Problem ist, eine Verzögerung zwischen dem Klick und der Antwort vom Server. –
siehe http://api.jquery.com/submit/ –
Sie müssen den Klick-Handler nicht hinzufügen. 'validate' macht das für Sie. Siehe meine Antwort unten. –