我正在使用jquery驗證插件,並且驗證工作方式與我想要的非常相似,但是我遇到了一個小問題。刪除無效字段上的默認錯誤消息
當輸入字段被驗證時,我在輸入字段旁邊顯示一個綠色刻度標記,指示字段已被成功驗證。
如果頁面上有錯誤,我會在頁面頂部顯示一條錯誤消息,指出無效字段的數量。
所有這些工作正常。
如果輸入字段被修改並且不再有效,則會出現該問題。驗證刪除會刪除輸入字段旁邊的綠色勾號標記,這是正確的,但它會在輸入字段旁邊顯示默認錯誤消息。我不想在輸入字段旁邊顯示錯誤消息。
如何在字段變爲無效時刪除默認錯誤消息文本?
<script type="text/javascript">
var j$ = jQuery.noConflict();
j$(document).ready(function(){
j$.validator.addMethod("money", function(value, element) {
return this.optional(element) || /^(\d{1,3})(\.\d{2})$/.test(value);
}, "Must be in US currency format 0.99");
var validator = j$('[id$=Details]').validate({
invalidHandler: function() {
j$("#error-message").html('<img src="{!URLFOR($Resource.event_ver2, 'images/error-icon.png')}" width="32" height="32">').append(" Please correct the entries highlighted below. " + validator.numberOfInvalids() + " field(s) are invalid.");
},
success: function(label, element) {
label.html('<img src="{!URLFOR($Resource.event_ver2, 'images/success-icon.png')}" width="16" height="16" class="validated">').insertAfter(element);
},
errorPlacement: function(error, element) {
return false;
}
});
j$('[id$=Email]').rules("add",{
required: true,
email: true
});
j$('[id$=Credit_Amount]').rules("add",{
required: true,
'money': true
});
j$('[id$=Credit_Card_Number]').rules("add",{
required: true,
creditcard2: function() { return j$('[id$=Credit_Card_Type]').val(); }
});
j$('[id$=Verification_Code]').rules("add",{
required: true,
digits: true
});
j$('[id$=Credit_Card_Type]').change(function(){j$('[id$=Details]').validate().element('[id$=Credit_Card_Type]') });
});
</script>
感謝您的幫助。
這是一個非常具有挑戰性的。我帶上了你的jsFiddle,並在'success:','invalidHandler:'和'errorPlacement:'裏放了一個'console.log'。令我驚訝的是,當出現默認錯誤消息時,這些消息都沒有消失,因此,我不明白它是如何動態刪除的。奇怪的是,你的綠色複選標記被包含在同一個'label'元素中,它的'class'總是'.error',不管它是否包含默認信息或複選標記。我重新考慮了您的代碼,以便在下面制定可行的解決方案。 – Sparky