如何使用jQuery在SAP UI5中为寄宿生着色

时间:2019-10-02 10:57:19

标签: javascript jquery css sapui5

我有以下问题:在字段中输入后,我检查该字段的值是否正确。

        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');

所以我的主要问题是,如何获取字段的ID,因为我认为必须在("...")符号后的$中输入ID。而且我的jQuery语法正确吗?

3 个答案:

答案 0 :(得分:1)

您可能想看看InputBase的valueState属性(请参阅example

更好的是,您可以使用Constraints并让UI5为您处理验证。

<Input
    textAlign="Right"
    type="Number"
    value="{
        path: '/Grosston',
        type: 'sap.ui.model.type.Float',
        constraints: {
            minimum: 0,
            maximum: 500
        }
}"/>

答案 1 :(得分:0)

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。

答案 2 :(得分:0)

好的,经过一个艰难的周末,我找到了解决问题的方法

    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的条目。我想我可以通过删除ID来解决问题,但我不知道如何。

enter image description here