Validation 如何重置qTip2验证?
我在ASP.NETMVC项目中有一个表单,我正在该表单上使用qTip2显示验证错误。在这个表单上,我还有一些文本字段,它们根据单选按钮的选择被激活/取消激活。当不使用字段时,我设置它们的disabled=“disabled”属性。这确保了这些字段的客户端验证(jQuery非侵入性验证)也被停用。现在,我想知道如何为禁用的字段重置qTip2“气泡” 假设我有单选按钮1和2,分别启用文本框A和B。假设默认情况下选择了单选按钮1,并且当选择相应的单选按钮时,文本框A和B是必填字段。如果我按下提交按钮而不填充任何文本字段,文本框a旁边会出现qTip错误气泡。现在,如果我按下单选按钮2,我必须清除气泡,禁用文本框a及其验证,并启用文本框B及其验证。但是,如果此时按submit而不填写文本框B,则不会出现错误气泡,并且表单不会被提交 我尝试了以下命令的各种组合来完成此操作,但随后验证错误被完全禁用:Validation 如何重置qTip2验证?,validation,jquery-validate,qtip2,Validation,Jquery Validate,Qtip2,我在ASP.NETMVC项目中有一个表单,我正在该表单上使用qTip2显示验证错误。在这个表单上,我还有一些文本字段,它们根据单选按钮的选择被激活/取消激活。当不使用字段时,我设置它们的disabled=“disabled”属性。这确保了这些字段的客户端验证(jQuery非侵入性验证)也被停用。现在,我想知道如何为禁用的字段重置qTip2“气泡” 假设我有单选按钮1和2,分别启用文本框A和B。假设默认情况下选择了单选按钮1,并且当选择相应的单选按钮时,文本框A和B是必填字段。如果我按下提交按钮而
$('.qtip').remove();
$('.qtip').hide();
$("input.input-validation-error").removeClass("input-validation-error"); // watch out for the error message labels or they won't go away
$('form').data('validator').resetForm();
$("form").validate().form();
无论我在单击单选按钮和禁用/启用适当的文本框后执行这些命令的组合,qTip气泡都会消失,但即使我单击“提交”按钮,它们也不会再次出现,表单上也会出现其他错误
我可能没有使用正确的命令来重置qTip验证气泡。好的,我在发布问题后立即找到了解决方案。我使用了本页上提出的解决方案,对此我做了一些修改。我添加了以下行:$form.find('input').qtip('destroy') 它给出了:
//Taken from: http://johnculviner.com/?tag=/unobtrusive-validation-reset
(function ($) {
$.fn.resetValidation = function () {
var $form = this.closest('form');
//Destroy qTip error bubbles (http://craigsworks.com/projects/forums/thread-using-qtip-with-jquery-validation-framework)
//$form.find('input:not(.errormessage)').qtip('destroy');
$form.find('input').qtip('destroy');
//reset jQuery Validate's internals
$form.validate().resetForm();
//reset unobtrusive validation summary, if it exists
$form.find("[data-valmsg-summary=true]")
.removeClass("validation-summary-errors")
.addClass("validation-summary-valid")
.find("ul").empty();
//reset unobtrusive field level, if it exists
$form.find("[data-valmsg-replace]")
.removeClass("field-validation-error")
.addClass("field-validation-valid")
.empty();
return $form;
};
//reset a form given a jQuery selected form or a child
//by default validation is also reset
$.fn.formReset = function (resetValidation) {
var $form = this.closest('form');
$form[0].reset();
if (resetValidation == undefined || resetValidation) {
$form.resetValidation();
}
return $form;
}
})(jQuery);
然后,当单击单选按钮时,我调用$(“form”).resetValidation();启用/禁用适当字段后