validate:function(section){
var elements=this.sections.$sections.eq(section).data('elements') //reference elements within this section that should be validated
var validated=true, invalidtext=["Fill the following areas:\n"]
function invalidate(el){
validated=false
invalidtext.push("- "+ (el.id || el.name))
}
for (var i=0; i<elements.length; i++){
if (/(text)/.test(elements[i].type) && elements[i].value==""){ //text and textarea elements
invalidate(elements[i])
}
else if (/(select)/.test(elements[i].type) && (elements[i].selectedIndex==-1 || elements[i].options[elements[i].selectedIndex].text=="")){ //select elements
invalidate(elements[i])
}
else if (elements[i].type==undefined && elements[i].length>0){ //radio and checkbox elements
var onechecked=false
for (var r=0; r<elements[i].length; r++){
if (elements[i][r].checked==true){
onechecked=true
break
}
}
if (!onechecked){
invalidate(elements[i][0])
}
}
}
if (!validated)
alert(invalidtext.join('\n'))
return validated
},
我想在此函数中添加一个控件,用于检查字段是否可见。我尝试将其添加到行中但是没有用;
elements[i].style.display=="none"
我隐藏的表没有输入,这可能是理由吗?是否有其他方法可以添加此控件?
修改 解: 元素[I] .style.display!== “无”
答案 0 :(得分:0)
elements
似乎是一个DOM元素数组,而不是jquery对象。必须在jquery对象上调用is
。
$(elements[i]).is(":visible")
另请注意,这会返回一个布尔值,无需检查它是否为== true
。