Плагин проверки jQuery: добавьте правила проверки, но нужно скрыть сообщение в фокусе

Следующий метод вызывается, чтобы сделать элементы управления обязательными в зависимости от некоторых условий.

addRequired = function ($ele, msg, min, minMsg) {
    $ele.rules('add', {
        required: true,
        min: min,
        messages: {
            required: msg,
            min: minMsg
        }
    });

    $.validator.unobtrusive.parseElement($ele.get(0));
}

И вызывающий код

if (requiredOptions["CompanyName"]) {
    addRequired($('#CompanyName'), 'Company is required');
}
if (requiredOptions["SiteName"]) {
    addRequired($('#SiteNameDD'), 'Enter a Site');
}

Проверка работает отлично. Но требование заключается в том, что когда элементы управления (например, CompanyName) сосредоточены, требуемое сообщение должно исчезнуть. Как правило, когда бы ни фокусировался требуемый элемент управления, появляется сообщение об ошибке. Требуется показать сообщение о событиях фокуса или отправки формы. Как я мог достичь этого?

обновленный

Из решения, упомянутого @Praveen_Kumar, я предложил следующие изменения

addRequired = function ($ele, msg, min, minMsg) {
        $ele.rules('add', {
           ... ... ...
        });

        // Remove the validator message on focus.
        $ele.on("focus", function () {
            var thisRule = $.validator.staticRules($ele.get(0));
            thisRule.required = false;            
         });

        // Add the validator message on blur.
        $ele.on("blur", function () {
            var thisRule = $.validator.staticRules($ele.get(0));
            thisRule.required = true;
        });
       ...    
}

1 ответ

Решение

Просто добавьте немного кода здесь:

addRequired = function ($ele, msg, min, minMsg) {
    $ele.rules('add', {
        required: true,
        min: min,
        messages: {
            required: msg,
            min: minMsg
        }
    });

    // Remove the validator message on focus.
    $ele.one("focus", function () {
        $.validator.hideMessage($ele.get(0)); // Replace this with the right method.
        $ele.off("focus");
    });

    $.validator.unobtrusive.parseElement($ele.get(0));
}

Вот $.validator.hideMessage($ele.get(0)); является псевдо-функцией, которая принимает элемент, который был проанализирован и признан недействительным. Вы не указали URL подключаемого модуля валидатора, чтобы правильно указывать точную функцию скрытия.

Другие вопросы по тегам