首页 > 解决方案 > jQuery 验证成功消息在单击每个元素时显示,但是当我提交页面然后返回成功消息时消失了

问题描述

.questionTitle__valid当我们验证页面上的每个元素时,我有一个显示类的表单。

这是我的代码

$.validator.setDefaults({
    highlight: function (e) {
        $(e).closest('.questionWrap').addClass('error');
        $(e).closest('.questionWrap').find('.questionTitle').removeClass('questionTitle__valid');
    },
    unhighlight: function (e) {
        var qWrap = $(e).closest('.questionWrap');
        $(e).closest('.questionWrap').find('.questionTitle').addClass('questionTitle__valid');
        if (qWrap.find('.field-validation-error').length == 0) {
            $(e).closest('.questionWrap').removeClass("error");   
        }
    },
    onclick: function (e) {
        this.element(e);
    },
    ignore: ':hidden:not(.validateHidden)'
});

我的问题是当我提交页面并转到第 2 页然后返回第 1 页时.questionTitle__valid消失了。

我想如果我在 document.ready 上调用这个

$('.pet_questions:visible').find(":input").valid();

哪个验证是可见元素,但在第一次加载页面时,验证插件会运行并显示所有错误消息。

就像我需要调用验证是否所有元素都已填写,像这样填写

$('.pet_questions:visible').find(":input").each(function () {
    if ($(this).val() != "") {
        $(this).valid();
    }
});

但是如果我添加这个错误消息仍然会在第一页加载时加载

如果所有元素都已在 document.ready 上填写,任何帮助将不胜感激调用 jQuery validate

标签: javascriptjqueryjquery-validate

解决方案


管理对此进行排序,因此当用户返回页面时,如果第一个问题已经得到回答,我会重新验证表单,并且只验证可见的字段。这可能不是一个很好的方法,但似乎对我有用。

if ($(".petspecieradio:checked").length > 0) {
    $('.pet_questions:visible').find(":input").valid();
}

推荐阅读