我已使用jQuery验证为我的表单设置了验证。不幸的是,在某些时候,我想在用户启用/禁用复选框时调用$("#clientConfigurationForm").valid()
强制重新评估。我希望当它们被禁用并且调用.valid()
时,忽略当前无效的输入表单(并失去验证状态)。目前这没有发生。我怎样才能让它发挥作用?
复选框活动
$("#clientConfigurationForm").on("change","input[type=checkbox]",function(){
$(this)
.closest("div")
.find("input, select")
.not(this)
.not(":submit")
.prop("disabled", !$(this).prop("checked"))
.each(function(){
$(this).valid();
});
});
验证码
$("#clientConfigurationForm").validate({
onkeyup: function (element) {
$(element).valid();
},
focusInvalid: false,
invalidHandler: function(form, validator) {
if (!validator.numberOfInvalids())
return;
// Find out what my ID is
var formIndex = $(validator.errorList[0].element).prop("id").replace(/[A-Za-z]+/g, '');
$("#clientSettingsLinks a").eq(formIndex).trigger("click");
},
errorPlacement: function (error, element) {
var parent = $(element).parent();
var validationContainer = parent.find(".validationResult");
if (validationContainer.length == 0){
validationContainer = $('<span class="validationResult"><i class="'+errorIconClass+' inputValidationIcon"></i></span>');
parent.append(validationContainer);
}
validationContainer.addClass("tooltip").attr("title", error.text());
},
highlight: function (element, errorClass, validClass) {
$(element).parent().find("i").removeClass("icon-ok").addClass(errorIconClass);
$(element).addClass("error");
},
unhighlight: function (element, errorClass, validClass) {
$(element).parent().find("i").removeClass(errorIconClass).addClass("icon-ok");
$(element).parent().find("span.validationResult.tooltip").removeClass("tooltip").attr("title", "");
$(element).removeClass("error");
},
submitHandler: function(form) {
alert("SUBMITTED YO");
}
});
答案 0 :(得分:4)
Documentation: 提示和重置类型的输入始终被忽略,禁用的元素也是如此。
然而,你似乎发现了一些奇怪的东西。
这有效
var val;
$("#clientConfigurationForm").on("change", "input[type=checkbox]", function () {
val.resetForm();
$(this)
.closest("div")
.find("input, select")
.not(this)
.not(":submit")
.prop("disabled", !$(this).prop("checked"))
.not(":disabled")
.each(function () {
$(this).valid();
});
});
val = $("#clientConfigurationForm").validate({
onkeyup: function (element) {
$(element).valid();
},
focusInvalid: false,
submitHandler: function (form) {
alert("submitted");
}
});