Как покрасить границу в Sap UI5 с помощью Jquery - PullRequest
1 голос
/ 02 октября 2019

У меня следующая проблема: после ввода в поле я проверяю, в порядке ли значение поля.

        var oCheckGrossTons = oGrossTons.getValue();
        var Msg = this.getResourceBundle().getText("validation.grossTons");

            if (oCheckGrossTons < 500) 
            {var oMessage = new Message({
            message: Msg,
            type: MessageType.Error
        });
        sap.ui.getCore().getMessageManager().addMessages(oMessage);

Итак, теперь я хочу закрасить границу этого поля красным, чтобы пользователь мог видеть, где он допустил ошибку.

Поэтому я попытался решить эту проблему с помощью jQuery. Я создал стиль CSS, например:

.rrpGrossTons {
border-color: "red"}

, и мой jQuery выглядит следующим образом:

$("...").addClass('.rrpGrossTons');

Итак, моя главная проблема в том, как мне получить идентификатор поля, потому что ядумаю, что я должен ввести идентификатор в ("...") после символа $. И правильный ли синтаксис моего jQuery?

Ответы [ 3 ]

1 голос
/ 02 октября 2019

Возможно, вы захотите взглянуть на свойство valueState InputBase (см. пример )

Еще лучше, вы можете использовать Ограничения и позвольте UI5 обработать проверку для вас.

<Input
    textAlign="Right"
    type="Number"
    value="{
        path: '/Grosston',
        type: 'sap.ui.model.type.Float',
        constraints: {
            minimum: 0,
            maximum: 500
        }
}"/>
0 голосов
/ 07 октября 2019

Хорошо, после тяжелых выходных я нашел решение для моей проблемы

    var oCheckGrossTons = oGrossTons.getValue();
        if (oCheckGrossTons < 500) {
            this.setInvalidGrossTons(oGrossTons.getId());
        } else {
            this.removeErrorMsgForId(oGrossTons.getId());
        }

и

setInvalidGrossTons: function (id) {
        var oMessageProcessor = new sap.ui.core.message.ControlMessageProcessor();
        var mainMsg = this.getResourceBundle().getText("validation.grossTons");
        var msg = new sap.ui.core.message.Message({
            message: mainMsg,
            additionalText: "",
            description: "",
            type: sap.ui.core.MessageType.Error,
            target: "/" + id + "/value",
            processor: oMessageProcessor
        });
        this.bus.publish("rrp", "validationError", {
            message: msg
        });
    },

, поэтому единственная проблема, с которой я столкнулся сейчас:

Когда я ввожу 100 тонн, я получаю сообщение об ошибке :-) Если я ввожу 200 тонн, я получаю сообщение об ошибке дважды, пока я не введу более 500 тонн, и сообщений об ошибках больше нет.

Так как мне удалитьдвойное сообщение об ошибке? Я думаю, что проблема в моем MessageProcessor.constructor Там у меня есть 2 записи с разными идентификаторами. Я думаю, что могу решить проблему, удалив ID, но я не знаю как.

введите описание изображения здесь

0 голосов
/ 04 октября 2019

SAP имеет встроенную функциональность для того, чего вы хотите достичь:

// Mark control as not valid:
oGrossTons.setValueState(sap.ui.core.ValueState.Error);
// Reset the error state
oGrossTons.setValueState(sap.ui.core.ValueState.None);

Таким образом, в вашем коде это будет:

var oCheckGrossTons = oGrossTons.getValue();
if (oCheckGrossTons < 500) {
    oGrossTons.setValueState(sap.ui.core.ValueState.Error);
    var Msg = this.getResourceBundle().getText("validation.grossTons");
    oGrossTons.setValueStateText(Msg);
    var oMessage = new Message({message: Msg, type: MessageType.Error});
    sap.ui.getCore().getMessageManager().addMessages(oMessage);
} else {
    oGrossTons.setValueState(sap.ui.core.ValueState.None);
}

или используйте ограничения, как упомянуто @ A.vHв своем ответе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...