Verstecken senden-Schaltfläche, bis die form gültig ist
Ich bin Recht neu mit Jquery, so könnte dies ein einfaches problem, aber gibt es eine Möglichkeit zum ausblenden der Schaltfläche "senden" auf einem Formular, bis Sie alle Felder validiert wurden.
Validierung brauchen würde, um ein "as you type" - Lösung. Im Grunde habe ich 3 Felder - Vorname, Nachname und e-mail. Ich würde gerne den submit-button zu bleiben ausgeblendet, bis die beiden 'name' Felder müssen ausgefüllt wurde und eine gültige e-mail-Adresse eingegeben wurde in die e-mail-Feld.
Form selbst verwendet AJAX zur Eingabe der Formulardaten in eine Datenbank. Das Formular in einer lightbox, die automatisch schließen, sobald der submit-button geklickt wird.
Können Sie ein Beispiel finden Sie hier: http://testing.xenongroupadmin.com/whatis/pfi
Ignorieren, die 'dieses Fenster Schließen" - link - das ist es nur für meine Bequemlichkeit und entfernt werden, die in der finalen version.
Unten ist der HTML-code für die form, gefolgt von der JQuery/AJAX submission-code:
<form id="registerform" action="thanks.php" method="POST">
<ul id="inputform">
<li>
<label for="firstname" id="firstnamelabel">First Name</label>
<input type="text" name="first_name" id="fname" class="registerboxes" />
</li>
<li>
<label for="lastname" id="lastnamelabel">Last Name</label>
<input type="text" name="last_name" id="lname" class="registerboxes" />
</li>
<li>
<label for="email" id="emaillabel">E-mail Address</label>
<input type="text" name="emailbox" id="email" class="registerboxes" />
</li>
</ul>
<input type="submit" value="Submit" id="emailbutton" />
</form>
Und Jquery:
$(document).ready(function(){
$("form#registerform").submit(function() {
var fname = $('#fname').attr('value');
var lname = $('#lname').attr('value');
var email = $('#email').attr('value');
$.ajax({
type: "POST",
url: "post.php",
data: "fname="+ fname +"& lname="+ lname +"& email="+ email,
success: function(){
$('div#register-panel, div#lightbox').fadeOut(300);
}
});
return false;
});
});
Dank!
- ho kann überprüft werden, ob die Eingänge?
- Ich bin Planung, um die jquery-validation-plugin, aber habe nicht geschrieben, den code noch
- Warum nutzen Sie nicht .val() anstelle von attr('value'); ?
- Tun können. Noch brauchen, um herauszufinden, wie zu tun, machen Sie den Absenden-button angezeigt wird, obwohl.
- Naja ich würd wahrscheinlich führen Sie eine Gültigkeitsprüfung auf ein pro-Feld-basis, basierend auf blur, wo auf dem letzten Feld nach der erfolgreichen Validierung das Feld ausführen ein neben der Prüfung gegen alle Felder, wo Sie, wenn es kommt wieder ein Erfolg für alle wird, zeigen Sie die-Taste.
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://jsfiddle.net/nickaknudson/KnZaq/
UPDATE
Sorry, vielleicht wurde das buggy-version von der Geige. Versuchen Sie es erneut?
http://jsfiddle.net/nickaknudson/KnZaq/3/
RESSOURCEN
disabled="disabled"
eher als versteckt Sie den Absenden-button. Als Zacharias wies darauf hin, dies nicht verhindern, dass Benutzer entfernen das Attribut manuell und dann die Abgabe einer ungültigen form, so tun, stellen Sie sicher, dass server-side-validaiton.$('#emailbutton').hide()
änderungen$('#emailbutton').attr("disabled", "disabled")
, und$('#emailbutton').show()
änderungen$('#emailbutton').attr("disabled", null)
Ich weiß nicht, was die Validierung plugin du verwendest, aber ich nehme an, es gibt immer dann einen true/false. Entweder in Ihrer ready-handler oder in die css legen Sie die Anzeige der Schaltfläche "senden" auf "none", dann, nachdem Sie bestätigt haben, verwenden Sie die JQuery show () - Methode. So etwas wie:
Andere, nutzerfreundlichere Möglichkeit wäre, zu zeigen, der button aber deaktiviert, bis die form gültig ist, aktivieren Sie es.
Dave
Ihre Formular-Daten ist nicht so groß, Sie können etwas tun, manuell (denke ich), wenn Sie möchten, um etwas neues zu lernen, statt der Verwendung von plugins und Validierungen in javascript Seite.
Gut, ich bevorzuge es, zu validieren, die Dinge durch die server-Seite, werfen Sie einen Blick auf diese:
Getestet und arbeiten:
index.htm
validate.php
thanks.php