2013-02-25 66 views
0
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 
    }, 

我想添加一个控件到这个函数来检查字段是否可见。我试图将这添加到行但没有工作;jquery javascript验证是否可见

elements[i].style.display=="none" 

我隐藏表格没有输入,这是理由吗?有没有其他方法来添加此控件?

EDIT 解决方案: 元素[I] .style.display == “无”

+0

元素[i]应该是jquery集合而不是标准HTMLElement对象才能调用“is”方法 – Stphane 2013-02-25 16:26:52

回答

0

这样看来,elements是DOM元素,而不是jquery的对象的数组!。必须在jquery对象上调用is

$(elements[i]).is(":visible") 

另外请注意,这将返回一个布尔值,无需检查,如果它是== true

+0

已修复问题。 – milesh 2013-02-25 16:34:23

+0

如果您使用的是jquery,那么答案仍然存在(如您的标签暗示)。即使您隐藏父元素,这也可以工作。 – 2013-02-25 18:13:52