Вариант 4. Дополнительная валидация формы
-----------------------------------------

Расширение :ref:`extfp-usecases-uc1-label`. Дополнительная валидация: значение поля «Итоговая сумма»
должно быть не больше значения поля «Предварительная сумма».
Иначе сразу по мере ввода некорректного значения поле подсвечивается красным
и появляется оранжевая подпись под ним с текстом:

    Значение данного поля не должно превышать значения поля  "Предварительная сумма"

.. raw:: html

    <iframe src="../../_static/html/integration/extfp-usecases/uc4/index.html" scrolling='no' height="930px" width="100%" style="border:1px solid grey;"></iframe>

Исходный код JavaScript и CSS формы аналогичны :ref:`extfp-usecases-uc1-label`.

Исходный код JavaScript доп. ФЛК для варианта 4, который необходимо вставить
во вкладку «Код скрипта» настроек компонента, соответствующему числовому
полю «Итоговая сумма»:

.. code-block:: javascript

    var sum1 = model.playerModel.getModelWithId("sum1");

    function checkSumValue() {
        return model.getValue() !== null && parseInt(sum1.getValue()) < parseInt(model.getValue());
    }

    var errorLabel = jQuery("<div>", {class: "asf-Label"});
    errorLabel.css("color", "#ff9966");
    errorLabel.html('Значение данного поля не должно превышать значения поля "Предварительная сумма"');
    view.container.append(errorLabel);
    errorLabel.hide();

    view.originalMarkInvalid = view.markInvalid;
    view.markInvalid = function () {
        view.originalMarkInvalid();
        errorLabel.show();
    };

    view.originalUnmarkInvalid = view.unmarkInvalid;
    view.unmarkInvalid = function () {
        view.originalUnmarkInvalid();
        errorLabel.hide();
    };


    sum1.on("valueChange", function () {
        view.checkValid();
    });


    model.on("valueChange", function () {
        view.checkValid();
    });


    model.originalErrors = model.getSpecialErrors;
    model.getSpecialErrors = function () {
        if (checkSumValue()) {
            return {id: model.asfProperty.id, errorCode: AS.FORMS.INPUT_ERROR_TYPE.valueTooHigh};
        } else {
            return model.originalErrors();
        }
    }
