2016-05-23 65 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

相关问题