2016-05-23 63 views
0

我想檢查是否所有的div都可見,如果它們不顯示包含提交按鈕的div。所有的div基本上都是驗證器,只有在出現錯誤時纔會顯示。這是因爲我無法使用Jquery驗證器。我在計時器上這樣做,所以它可以每5秒檢查一次,而不是使用按鈕。另外 - 不可能將驗證鏈接到按鈕。如何檢查每隔5秒查看Div是否可見,如果有,請顯示另一個div?

我已經試過:
JS:

 window.setInterval(function(){ 
    if ($(".needData:hidden").length == 0) { 
     $(".answer").show(); 
     $(".pleaseval").hide(); 

    }else{ 
     $(".answer").hide(); 
     $(".pleaseval").show(); 
      }  
     }, 5000); 

HTML:

div id="myClass" class="needData" style="display:none">hidden</div> 
div id="myClass1" class="needData" style="display:none">hidden</div> 
div id="myClass2" class="needData" style="display:none">hidden</div> 
div id="myClass3" class="needData" style="display:none">hidden</div> 
<div class="pleaseval">Please fill out form</div> 

<div id="answer" class="answer"><button>button</button></div> 
+1

您應該考慮在Event上執行給定的操作,而不是輪詢檢查給定的狀態。 [This](http://stackoverflow.com/questions/1462138/js-event-listener-for-when-element-becomes-visible)可能會有用。 –

+0

我應該,但由於愚蠢的原因,讓路難以解釋,我不能 – Stacker

+0

沒有看到任何div類和答案。請更新代碼段。另外使用:可見,而不是:隱藏 – brk

回答

1

你的目標在JS .answer但你不真正需要#answer

像這樣:

window.setInterval(function(){ 
    if ($(".needData:visible").length == 0) { 
     $("#answer").show(); 
     $(".pleaseval").hide(); 

    }else{ 
     $("#answer").hide(); 
     $(".pleaseval").show(); 
    }  
}, 5000); 

在這裏,你可以看到它https://jsfiddle.net/8bL8ywzu/

測試,如果你從一個元素中刪除style="display:none"你會看到,經過5S按鈕將被隱藏。

+0

除非您將'.answer'更改爲'#answer',否則您的代碼和代碼之間有什麼區別? – Mohammad

+0

@Mohammad問題在此期間進行編輯。除了':hidden'我設置了':visible' – jakob

+0

真的沒什麼區別,因爲我在代碼中正確地引用了class和id,我只是把它放在了stackoverflow上。生病看看是否有其他問題 – Stacker

相關問題