8.7.2.4. Вариант 4. Дополнительная валидация формы¶
Расширение Вариант 1. Отображение проигрывателя, встроенного во внешний портал. Дополнительная валидация: значение поля «Итоговая сумма» должно быть не больше значения поля «Предварительная сумма». Иначе сразу по мере ввода некорректного значения поле подсвечивается красным и появляется оранжевая подпись под ним с текстом:
Значение данного поля не должно превышать значения поля «Предварительная сумма»
Исходный код JavaScript и CSS формы аналогичны Вариант 1. Отображение проигрывателя, встроенного во внешний портал.
Исходный код JavaScript доп. ФЛК для варианта 4, который необходимо вставить во вкладку «Код скрипта» настроек компонента, соответствующему числовому полю «Итоговая сумма»:
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();
}
}