是否可以使用变量验证生成if语句?

时间:2013-10-04 10:29:03

标签: jquery validation variables dynamic

正如标题所示,我正在使用脚本生成if验证。所以if语句将根据给定的数组进行调整(应该作为配置文件)。
让我举个例子:

 if(sTime == "12:00:00")
 {
   //code to happen when it's 12 o'clock
 }

配置输入应为“12:00:00”。没关系。但是如果配置文件中有更多次?
if语句应该是2次:

 if(sTime == "12:00:00" || sTime == "12:30:00")
 {
   //code to happen when it's 12 o'clock
 }



为了让这种情况自动发生,我会根据配置输入自行生成验证。
这是我的生成代码:

var tijd = ["12:00:00", "12:30:00"];
var validatie = '';

var length = tijd.length;
$.each(tijd, function(key, value)
{
    if(length != key+1)
    {
        if(length > 1)
        {
            validatie += 'sTime =="' + value + '" || ';
        }
        else
        {
            validatie += 'sTime =="' + value + '"';
        }
    }
    else
    {
        validatie += 'sTime =="' + value + '"';
    }
})

在这种情况下,我的验证值将是:sTime ==“12:00:00”|| sTime ==“12:30:00”
看起来应该是这样!但是,我如何使用它作为代码?它现在存储为字符串。

if(validatie)
{
  //will only check if the array exists
}

我怎么能超越这个变量?
任何帮助表示赞赏!

jsFiddle

这一切都在jquery,你可能没有注意到

1 个答案:

答案 0 :(得分:3)

如果预期的验证字面意思是“sTime的值与此数组中的某个元素匹配”,那么您可以这样做:

if(tijd.indexOf(sTime) > -1) {
    // code here
}

或者,如果由于某种原因你的浏览器不支持,那就有一个jQuery函数:

if($.inArray(sTime, tijd)) {
    // code here
}

不应该需要将if语句条件生成为字符串,然后尝试将其作为代码的一部分执行。

如果你绝对必须(我强烈建议这样做),你可以使用eval

if(eval(validatie)) {
    // code here
}