![](/img/trans.png)
[英]jquery validate .resetForm() not clearing form, validation messages firing on manual reset
[英]Jquery Validate resetForm does not clear error messages
我使用制表符在表單之間導航,當用戶按下下一個按鈕時,將進行表單驗證。 如果有錯誤,它將在頂部顯示錯誤摘要,並在每個字段顯示各個錯誤。 用戶更正錯誤,然后按“下一步”按鈕前進到下一個選項卡。 按下上一個按鈕時,不會清除錯誤消息。
如何清除頂部的錯誤容器以及每個表單字段中的各個錯誤消息,前提是表單在按下下一個按鈕時有效。 我嘗試過resetForm(),但是沒有用。
這是我的代碼
<form class="wizardTab" id="graph-data">
<div class="alert alert-error" id="alert-form-graph-data"></div>
<div class="row required" id="frmgraphdata">
<fieldset>
<legend>Select below</legend>
<div class="inputgroup" id="select_graph_data">
<label for="graph-only">
<input class="required" id="graph-only" name="select_graph_or_data" required="required" type="radio" value="graph-only"/>Graph
</label>
<label for="data-only">
<input class="required" id="data-only" name="select_graph_or_data" required="required" type="radio" value="data-only"/>Data
</label>
</div>
</fieldset>
</div>
<div class="row buttons">
<input class="btnNext" id="q0_btn_next" type="button" value="Next >"/>
</div>
</form>
Jquery代碼:
$('#q0_btn_next').click(function (e) {
e.preventDefault();
var formID = $(this).closest('form').attr('id');
var form = $('#'+ formID);
if (form.valid()){
//code to goto the next tab
// clear error message
form.validate().resetForm();
}
});
$('.wizardTab').each(function(){
$(this).validate({
onkeyup: false,
onclick: false,
onfocusout: false,
validClass: "success",
errorClass: "error",
rules: {
'select_graph_or_data': {
required: true
}
// more rules for other forms
},
invalidHandler: function(form, validator) {
if (!validator.numberOfInvalids())
return;
/*$('html, body').animate({
scrollTop: $(validator.errorList[0].element).offset().top
}, 500);*/
},
errorPlacement: function (error, element) {
if (element.parents('.inputgroup').length) {
error.insertBefore(element.parents('.inputgroup'));
element.parents('.inputgroup').addClass('error');
} else {
error.insertBefore(element);
};
},
showErrors: function (errorMap, errorList, currentForm) {
errors = this.numberOfInvalids();
var formID = this.currentForm.attributes.id.nodeValue;
var alrt = $('#alert-form-'+ formID);
if (errors > 0){
this.defaultShowErrors();
var msg = '<p>Your form has errors:</p><ul>';
$.each(errorMap, function(key, value) {
msg += '<li><a href="#' + key + '-row" class="error">' + value + '</a></li>';
});
msg += '</ul>';
// Show the error in the error summary container
$('#alert-form-' + formID).html(msg).show();
$(alrt).html(msg).show();
$('html, body').animate({ scrollTop: $(alrt).offset().top - 20}, 500);
}
}
});
});
通常, resetForm()
應該刪除包含錯誤消息的默認標簽元素。
你的代碼:
var formID = $(this).closest('form').attr('id'); // <- the ID of the form
var form = $('#'+ formID); // <- the form object
if (form.valid()){
formID.validate().resetForm(); // <- should be your `form` variable, not `formID`.
}
但是,您的formID
變量僅表示表單的ID,因此它不是正確的選擇器。 由於form
變量表示正確的選擇器$('#'+ formID)
,因此您需要使用form.validate().resetForm()
而不是formID.validate().resetForm()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.