试图用rails中的div id隐藏一组文本

时间:2014-01-13 19:48:49

标签: javascript ruby-on-rails

好的,我真的很沮丧,试着看看有什么事情发生。我在app / views / tasks / _form.html.erb文件中内嵌了所有内容,因此rails找不到js应该没有任何问题。

我有一个按钮......

<input type=button value="toggle foo" onclick="showHide('toDate');">

在我的div ...

 <div id="toDate">
    To Date
    <%= text_field_tag "to_date" %>
    </br>
  Days to Exclude
  <% Date::DAYNAMES.each_with_index do |day_name, wday| %>
    <% if day_name == "Sunday" || day_name == "Saturday" %>
      <%= check_box_tag "ignored_days[]", wday, true %>
    <% else %>
      <%= check_box_tag "ignored_days[]", wday %>
    <% end %>
    <%= day_name %>
  <% end %>
  </div>

然后是js ......

 <script language="javascript" type="text/javascript">
    function showHide(elementId) {
        if (document.getElementById) {
            var element = document.getElementById(elementId);
            if (element.style.visibility == 'hidden') {
                element.style.visibility = 'visible';
            } else if (element.style.visibility == 'visible') {
                element.style.visibility = 'hidden';
            }
        }
    }
    </script>

想法?

3 个答案:

答案 0 :(得分:0)

你有没有包含jQuery?

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

您还希望在页面加载时隐藏toDate。将它包围在一个函数中,如下所示:

$(function() {
   $('#toDate').hide();
})

来源:http://api.jquery.com/ready/

答案 1 :(得分:0)

您必须在呈现HTML后执行代码,您可以通过执行以下操作来实现:

$(document).ready(function(){
    $('#toDate').hide();
});

确保在您的布局中导入jQuery和资产文件。

答案 2 :(得分:0)

如果您确定包含了jQuery,请确保您在就绪块上的jQuery文档中运行代码,如下所示:

$(function(){
  $('#toDate').hide();
});

另请注意,新版本的rails包含turbolinks,它会部分破坏jQuery的document.ready事件。为了避免这种情况,您可以拦截turbolinks事件或包括jquery.turbolinks,如下所述:https://github.com/rails/turbolinks