您好我正在使用java隐藏我的表单上的某些标签和字段,具体取决于下拉菜单的数量,例如,这是一个有效的代码:
//Display Transfer tab if it is a transfer application
var ctrlApplicationType = Runner.getControl(pageid, 'ApplicationType');
ctrlApplicationType.on('change', function(e)
{
if (this.getValue() == 2)
{
var tabs = pageObj.getTabs(); tabs.show(2);
}
else
{
var tabs = pageObj.getTabs(); tabs.hide(2);
}
}
);
在上面的示例中,下拉列表从查找表中提供并返回主键INT,因此== 2可以正常工作。
但是,当我尝试使用复选框时,我现在遇到了问题,因为问题是复选框可以有多个选项。
我的复选框查找表有5个选项,所以如果我勾选选项1,2和3,则字段(字符串)存储为1,2,3。
我需要做的是更改上面的代码,如果它包含1,则返回true,即
如果(1,2,3)包含1那么为真 if(2,3)包含1然后为false。
非常感谢任何想法
答案 0 :(得分:0)
好吧,反对我更好的判断(我真的很想看到你根据我已经给你的信息做出自己的尝试),在这里你去......
var selectedString = "1,2,3"; // from your code, this is this.getValue()
var selectedArray = selectedString.split(","); // split the string into an array using a comma (,) as the split point
var foundInArray = selectedArray.includes('1'); // foundInArray is now a boolean indicating whether or not the value '1' is one of the values in the array.
if(foundInArray)
{
// do the found action
}
else
{
// do the not found action
}
如果你想与整数值而不是字符串值进行比较,那也很容易。
var integerArray = selectedArray.map(function(x){ return parseInt(x); });
var foundInArray = integerArray.includes(1);
最后,所有这些都可以链接成一行:
if(selectedString.split(",").map(function(x){return parseInt(x);}).includes(1))
{
// do found action
}
else
{
// do not found action
}
要遍历固定列表并显示/隐藏每个,您可以这样做......
var possibleTabs = [1,2,3,4,5];
for(n in possibleTabs)
{
if(selectedString.split(",").map(function(x){return parseInt(x);}).includes(n))
{
var tabs = pageObj.getTabs(); tabs.show(n);
}
else
{
var tabs = pageObj.getTabs(); tabs.hide(n);
}
}
当然,这假设复选框值和选项卡之间存在关系。如果没有,那么你将不得不将它们作为单独的if / elseif / else语句列出,并且这将很快失控。