远程验证是 mvc 中的一个步骤

remote validation is behind one step in mvc

还有其他人遇到这个问题吗? mvc中unobtrusive远程验证落后一步

我正在尝试验证一个字段,如果该字段有效,它旁边会出现一个复选标记。除远程外一切正常。

请参阅附件中的图片 (gif)。 在此 gif 中,我有两种带有模糊侦听器的形式。我检查是否 valid/invalid。如果该字段有效,则复选标记出现在其他地方,应该消失。

我让它可以用于确认电子邮件,但不能用于 'Field Two Remote validation'。一旦我聚焦然后模糊

,复选标记就会消失

还有其他人遇到过这种情况吗?如果我反其道而行之,即先输入电子邮件确认,我会遇到同样的问题

使复选标记显示的代码:

$.fn.addCheckIconTextBox = function (options) {
    var settings = $.extend({
        // These are the defaults.
        id: "#" + $(this).attr('id')
    }, options);
    if ($(settings.id).length > 0) {
        $(settings.id).blur(function (e) {
            console.log("isvalid " + $('form').validate().element(settings.id));
            if ($(settings.id).val() !== '') {
                if ($(settings.id).hasClass('input-validation-error')) {
                    $(settings.id).next('.helper').attr('class', 'ico helper');
                } else {
                    $(settings.id).next('.helper').attr('class', 'ico helper pass');
                }
            } else {
                $(settings.id).next('.helper').attr('class', 'ico helper');
            }
        });
    }
};

答案基于:Trouble Attaching Call Back to Unobtrusive Validation Show Error

/**add/remove form icon when valid/invalid only when svg.helper is beside it**/
v.settings.highlight = function (element, errorClass, validClass) {
    var elId = $(element).attr('id');
    var checkIconEl = $('#' + elId).next('.helper');
    checkIconEl.attr('class', 'ico helper');
    originalHighlight.call(v, element, errorClass, validClass);
}
v.settings.unhighlight = function (element, errorClass, validClass) {
    var elId = $(element).attr('id');
    var checkIconEl = $('#' + elId).next('.helper');
    checkIconEl.attr('class', 'ico helper pass');
    originalUnHighlight.call(v, element, errorClass, validClass);
}