如何将文本字段设置为' required'然后在Maximo Anywhere应用程序中突出显示所有内容

时间:2017-03-08 13:51:22

标签: javascript maximo-anywhere

这更像是一个如何。我想出来并决定分享,因为我找不到任何其他doco。这将迭代所有必填字段,突出显示空字段并从已填写的字段中删除突出显示。它将焦点设置在它找到的第一个空字段上。 注意:一旦显示视图或显示弹出对话框,焦点就会丢失,因此任何"抛出新的PlatformRuntimeWarning(' blah');“应删除直接跟随此新代码的语句。” / p>

处理程序代码:

define("application/handlers/WhatEverHandler", 
[ …
 "dojo/query",
 "dojo/dom",
 "dojo/dom-style",
…],
 function(…query, dom, domStyle, …) 
workLog.getRuntimeFieldMetadata('reading').set('required',true);
workLog.getRuntimeFieldMetadata('reading1’).set('required',true);
…
var mainNode = dom.byId("body");
var nodes = query(".requiredText", mainNode);
var firstemptynode = true;
for (var nodecount = 0; nodecount < nodes.length; nodecount++) {
    if (nodes[nodecount].value === ""){
        domStyle.set(nodes[nodecount], "borderBottom", "10px solid red");
        domStyle.set(nodes[nodecount], "background-color", "rgba(240, 147, 153, 0.5”);
        if (firstemptynode){
            nodes[nodecount].focus();
            firstemptynode = false;
        };
    }else{
        domStyle.set(nodes[nodecount], "borderBottom", "");
        domStyle.set(nodes[nodecount], "background-color", "");
    };
};

如果该字段在app.xml中没有标签,则无法将其设置为必需,因为该属性未定义。相反,您可以在app.xml中的文本项上定义一个空cssClass,并在查询中搜索该类,而不是&#34; requiredText&#34;,例如

伪影/ app.xml中:

<text cssClass="myReqTextBox" editable="true" placeHolder="Please Enter" id="WorkExecution.WorkDetailView_workOrder_groupitem_inst_Install4" resourceAttribute="reading" layoutInsertAt="itemReading1”/>

公共/ CSS / mdpi.css:

.myReqTextBox {
}

然后在代码中删除

workLog.getRuntimeFieldMetadata(‘<attribute>').set('required',true); 

行并将dom节点查询更新为

 var nodes = query(“.myReqTextBox", mainNode);

当然,如果你想应用一些非动态样式,你可以在这个类中静态设置它们。

1 个答案:

答案 0 :(得分:0)

这是一个有效的解决方案 - 评论/经验表示赞赏。