我有以下问题:在字段中输入后,我检查该字段的值是否正确。
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语法正确吗?
答案 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来解决问题,但我不知道如何。