这更像是一个如何。我想出来并决定分享,因为我找不到任何其他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);
当然,如果你想应用一些非动态样式,你可以在这个类中静态设置它们。
答案 0 :(得分:0)
这是一个有效的解决方案 - 评论/经验表示赞赏。