Die Verwendung einer glatten Animation für die Fehlermeldungen des jQuery-Validierungs-Plugins ist relativ einfach, wenn die Meldung first erscheint. Nachdem der erste Rückruf ausgeführt wurde, weiß ich jedoch nicht, wie die Nachricht weiter animiert werden kann, wenn der Benutzer die Eingabe ändert.Animieren der Fehlermeldungen für jQuery Validieren
In diesem Beispiel expandiere und verblasse ich die Fehlermeldungen, wenn/wenn sie zum ersten Mal erscheinen. Danach möchte ich die Fehlermeldungen weiterhin ein- und ausblenden, je nachdem, ob sie gültig sind oder nicht. Aber nur die Standardfunktionalität, bei der die Nachrichten schnell erscheinen/verschwinden (was nicht sehr visuell ansprechend ist) funktioniert für mich.
tl; dr:
möchte ich die Fehlermeldungen immer in und aus eher verblassen als zu blinken.
HTML
<form id="contactForm" class="form-horizontal" autocomplete="off">
<fieldset>
<h4 style="margin-bottom: 20px; margin-top: 20px;" class="text-center">Contact us today for a free thing</h4>
<div class="form-group">
<span class="col-xs-offset-1 col-xs-1 text-center"><i class="fa fa-user bigicon" aria-hidden="true" title="Name"></i></span>
<div class="col-xs-9">
<input type="text" name="Name" placeholder="Name" class="form-control hps-text-box">
</div>
</div>
<div class="form-group">
<span class="col-xs-offset-1 col-xs-1 text-center"><i class="fa fa-envelope-o bigicon" title="Email address"></i></span>
<div class="col-xs-9">
<input type="text" name="Email" placeholder="Email address" class="form-control hps-text-box">
</div>
</div>
<div class="form-group">
<span class="col-xs-offset-1 col-xs-1 text-center"><i class="fa fa-phone-square bigicon" title="Phone number"></i></span>
<div class="col-xs-9">
<input type="text" placeholder="Phone number (eg. 123-456-7890)" class="form-control hps-text-box">
</div>
</div>
<div class="form-group">
<span class="col-xs-offset-1 col-xs-1 text-center"><i class="fa fa-pencil-square-o bigicon" title="Enter your message for us here."></i></span>
<div class="col-xs-9">
<textarea name="UserMessage" rows="7" placeholder="Enter your message for us here. We will get back to you within 2 business days." class="form-control hps-text-box"></textarea>
</div>
</div>
<div class="form-group">
<div class="col-md-12 text-center">
<button id="submitButton" type="submit" class="btn btn-primary" autocomplete="off">Submit</button>
</div>
</div>
</fieldset>
</form>
JavaScript
$(document).ready(function() {
$("#contactForm").validate({
rules: {
Name: "required",
Email: {
required: true,
email: true
},
UserMessage: "required",
Phone: {
phoneUS: true
}
},
messages: {
Name: "Please provide your name",
Email: "Please enter a valid email address",
UserMessage: "Please enter a message"
},
errorElement: "div",
errorClass: "jqval-error",
errorPlacement: function(error, element) {
error.insertAfter(element);
error.slideDown(400);
error.animate({ opacity: 1 }, { queue: false, duration: 700 });
},
submitHandler: function(form) {
alert("Form submitted");
}
})
});
CSS
input,
select,
textarea {
max-width: none;
}
.hps-text-box {
margin-left: 10px;
}
.bigicon {
font-size: 34px !important;
}
div.jqval-error {
display: none;
opacity: 0;
margin-left: 18px;
color: #f39200;
font-weight: bold;
}
Dies ist keine triviale Anfrage ... Sie werden eine Menge Zeit damit verbringen müssen, die Dokumente zu studieren und mit den verschiedenen Callback-Funktionen wie 'errorPlacement',' success', 'highlight' und' unhighlight' zu spielen . Siehe auch diese Antwort für ähnliches Verhalten mit Tooltipster Plugin: http://stackoverflow.com/a/14741689/594235 – Sparky
Es kann Ihnen auch helfen zu wissen, dass, sobald das Plugin dynamisch erstellt die verschiedenen Fehlermeldung Elemente bleiben sie im DOM und werden anschließend umgeschaltet und/oder ausgeblendet. – Sparky
@Sparky danke für den Link. Was ich jedoch mit den Standardeinstellungen feststellen kann, sind die Nachrichtenelemente nicht nach ihrer ursprünglichen Erstellung programmatisch ausgeblendet.Vielmehr habe ich beobachtet, dass das Element an seinem Platz bleibt, aber der Text innerhalb des Elements leer wird. Diese Standardfunktionalität ist Teil dessen, was es für mich sehr schwierig machen wird. –