2013-02-25 59 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