使用带有包含的字符串的javascript

时间:2017-10-04 13:07:28

标签: javascript contains

您好我正在使用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。

非常感谢任何想法

1 个答案:

答案 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语句列出,并且这将很快失控。