最初にというメッセージが表示されたときに、jQuery検証プラグインのエラーメッセージにスムーズなアニメーションを使用するのはかなり簡単です。しかし、最初のerrorPlacement
コールバックが実行された後、ユーザーが入力を変更し続けると、メッセージのアニメーションを維持する方法がわかりません。jQuery Validateのエラーメッセージをアニメ化する
この例では、最初に表示されたときにエラーメッセージを展開してフェーディングしています。その後、エラーメッセージが有効であるかどうかに応じてフェードインまたはフェードアウトし続けます。しかし、メッセージがすぐに表示されたり消えたりする(あまり視覚的に魅力的ではない)デフォルトの機能だけが私のために働いています。
TL; DR:
は、私は、エラーメッセージが常に点滅ではなく、フェードインとフェードアウトします。
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;
}
これは簡単なリクエストではありません。ドキュメントを勉強し、 'errorPlacement'、' success'、 'highlight'、' unhighlight'などのさまざまなコールバック関数を使って遊ぶのにかなりの時間を費やす必要があります。 。また、Tooltipsterプラグインを使用して同様の動作についてこの回答を参照してください:http://stackoverflow.com/a/14741689/594235 – Sparky
プラグインがいろいろなエラーメッセージ要素を動的に作成すると、それらはDOMに残ります。その後トグルされ、および/または隠される。 – Sparky
@Sparkyリンクに感謝します。しかし、既定の設定では、メッセージ要素は最初の作成後にプログラムによって隠されたり表示されたりすることはありません。むしろ、私は要素が所定の場所にとどまっているのを見ましたが、要素内のテキストは空白になります。このデフォルトの機能は、私にとって非常に難しいものの一部です。 –