Javascript jQuery验证程序无效输入字段在成功提交后消失
我会保持简短。我有一个表单,该表单设置为在提交后显示无效/不完整的表单。我正在使用validate.js和form.js。提交不完整的表单后,字段显示为无效(正确)。更正并重新提交成功处理表单,但输入字段消失<我已经缩小了问题的范围。是在密码后面。我想我确实需要帮助。Javascript jQuery验证程序无效输入字段在成功提交后消失,javascript,jquery,ajax,Javascript,Jquery,Ajax,我会保持简短。我有一个表单,该表单设置为在提交后显示无效/不完整的表单。我正在使用validate.js和form.js。提交不完整的表单后,字段显示为无效(正确)。更正并重新提交成功处理表单,但输入字段消失
$(function() {
$('#fltm_register').ajaxForm({
beforeSubmit: function() {
$('#fltm_register').validate({
errorPlacement: function(error, element) { },
rules: {
first_name: {
required: true,
minlength: 2
},
last_name: {
required: true,
minlength: 2
},
email: {
required: true,
minlength: 4,
email: true
},
city: {
required: true
},
state: {
required: true
},
zip: {
required: true,
minlength: 4
},
country: {
required: true
}
},
messages: {
first_name: {
required: "",
minlength: ""
},
last_name: {
required: "",
minlength: ""
},
email: {
required: "",
minlength: "",
email: ""
},
city: {
required: ""
},
state: {
required: ""
},
zip: {
required: "",
minlength: ""
},
country: {
required: ""
}
},
invalidHandler: function(e, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
var message = errors == 1
? '<div class="alert alert-block alert-error">You missed 1 field. It has been highlighted below.</div>'
: '<div class="alert alert-block alert-error">You missed ' + errors + ' fields. They have been highlighted below.</div>';
$(".form_notifications").html(message);
$(".form_notifications").fadeIn();
}
},
errorClass:'control-group error',
errorElement: 'div.control-group',
highlight: function (element, errorClass) {
$(element).parents("div.control-group").addClass(errorClass);
}
});
return $('#fltm_register').valid();
},
success: function(responseText, statusText, xhr, $form) {
$(".form_notifications").hide();
$(".form_notifications").html(responseText).hide().fadeIn();
$("#fltm_register")[0].reset();
}
/* unhighlight: function (element, errorClass, validClass) {
$(element).parents(".error").removeClass(errorClass);
} */
});
});
所以我需要下面的代码,但我不知道具体放在哪里,因为它似乎破坏了AJAX
unhighlight: function (element, errorClass, validClass) {
$(element).parents(".error").removeClass(errorClass);
}
如果unhighlight是已定义的方法
highlight: function (element, errorClass) {
$(element).parents("div.control-group").addClass(errorClass);
},
unhighlight: function (element, errorClass, validClass) {
$(element).parents(errorClass).removeClass(errorClass).addClass(validClass);
}
非常感谢!我不明白这是怎么回事。然而,我的代码确实与原始脚本有了很大的改变,所以我应该再试一次。唯一的问题是,它似乎只适用于多达3个控制元素?虽然突出显示的是这样的:,但我确实有一个不与其余部分一起突出显示的。我会试着看看我能做些什么…事实上,对不起,我必须回溯这个答案(我想?)。虽然它似乎解决了提交问题,但它开始了一个新的问题。当我提交无效字段时,再次提交而不做任何更改会导致字段消失……是的,它的设置显示:无
unhighlight
,是.validate()
的一部分方法。因此,您只需将其放入.validate()
中即可查看效果。你能给我看看小提琴吗?由于造型的原因,很难用小提琴来重现它。这个(活生生的例子)怎么样?这是中断后的表单。不幸的是,该方法仍然会导致输入字段消失。
errorClass:'control-group error',
errorElement: 'div.control-group',
highlight: function (element, errorClass) {
$(element).parents("div.control-group").addClass(errorClass);
},
unhighlight: function (element, errorClass, validClass) {
$(element).parents(".error").removeClass(errorClass);
}
highlight: function (element, errorClass) {
$(element).parents("div.control-group").addClass(errorClass);
},
unhighlight: function (element, errorClass, validClass) {
$(element).parents(errorClass).removeClass(errorClass).addClass(validClass);
}