Добавление проверки JS на CompareValidator

Можно ли добавить функцию проверки JS для CompareValidator?
Я не могу использовать CustomValidator.

1 ответ

Решение

Я не уверен, нужно ли вам это по-прежнему или нет, но я полагаю, что нет, поскольку это без ответа...

Ну, вы не можете сделать это напрямую, однако вы можете скрыть оригинальную функцию, которая отвечает за проверку CompareValidator, и ввести новую. Это возможно потому, что все функции проверки происходит от ASP.NET в глобальном масштабе, который является... спорно, но полезно в этом случае.

Пожалуйста, найдите следующий модуль, который выполняет работу. Это выставляет вам два метода. Сначала вызывается addFunction, позволяющая добавить одну или несколько функций для пользовательской проверки. Эта функция должна возвращать логическое значение и использовать три параметра объекта Validator, TargetObject и CompareObject соответственно. Второй, называемый disableOldFunction, позволяет полностью избавиться от старой функции проверки, которая вызывается модулем, если все ваши функции действительны.

    var MyModules = {};
    MyModules.CompareValExtension = function ()
    {
        var functions = new Array();
        var oldFunc = null, disabled = false;

        function myCompareValidatorEvaluateIsValid(val)
        {
            var valid = true;
            if (oldFunc && functions.length)
            {
                for (i in functions)
                {
                    valid = functions[i](val, document.getElementById(val.controltovalidate), document.getElementById(val.controltocompare));
                    if (!valid) { break; }
                }
                if (!disabled && valid)
                {
                    valid = oldFunc(val);
                }
            }
            return valid;
        }

        if (typeof CompareValidatorEvaluateIsValid != 'undefined')
        {
            oldFunc = CompareValidatorEvaluateIsValid;
            window.CompareValidatorEvaluateIsValid = myCompareValidatorEvaluateIsValid;
        }

        var me = {};
        me.addFunction = function (func) { if (typeof func == "function") { functions.push(func); } }
        me.disableOldFunction = function () { disabled = true; }
        return me;
    } ();

Пример использования:

    MyModules.CompareValExtension.addFunction(function (val, elem, comp)
    {
        return elem.value == "my value"; 
    });
    MyModules.CompareValExtension.disableOldFunction();

Предостережение: пожалуйста, поместите этот модуль где-нибудь внизу страницы, чтобы убедиться, что сценарии проверки по умолчанию уже существуют. Вы также можете немного переписать модуль, чтобы отложить инициализацию, пока документ не будет готов.

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