我有一个可以无限复制的表单部分,我试图为它创建一个验证条件(使用ajaxForm插件,虽然这方面是相对偶然的)。
条件看起来有点像这样:
if(formData[i].name == 'create-flight[fields][0][scheduled-departure-time]' && formData[i].value == ''){
// Do stuff
}
请注意0
中的create-flight[fields][0][scheduled-departure-time]
。这可以是0
,1
,甚至是37
。重要的是,我不需要知道,因为该函数动态处理所有内容,并且此条件在foreach中触发,因此将检查每个字段。有没有办法在这里添加通配符?即create-flight[fields]['+any_integer+'][scheduled-departure-time]
?
这通常会通过or
运算符来满足,但它可能是任何号码,因此不实用。
答案 0 :(得分:3)
你试过一个正则表达式吗?尝试
formData[i].name.match(/^create-flight\[fields\]\[[0-9]+\]\[scheduled-departure-time\]$/)
答案 1 :(得分:0)
您可以使用正则表达式对此进行测试:
var re = new RegExp("^create-flight\[fields\]\[[0-9]+\]\[scheduled-departure-time\]$");
if (re.test(formData[i].name)) {
// ...
}
答案 2 :(得分:0)
我建议您使用正则表达式(http://www.w3schools.com/jsref/jsref_obj_regexp.asp)。
我会使用类似的东西:
/create-flight\[fields\]\[\d+\]\[scheduled-departure-time\]/
所以最终的代码应如下所示:
var patt = new RegExp(/create-flight\[fields\]\[\d+\]\[scheduled-departure-time\]/);
if(patt.test(formData[i].name) && formData[i].value == ''){
// Do stuff
}