在Ruby on Rails表单中显示/隐藏div

时间:2011-12-12 07:01:36

标签: javascript toggle visibility

我对此非常绝望和沮丧:如何在我的表单中隐藏一个或多个div(Ruby on Rails)?

我浏览了论坛并尝试了以下所有内容而没有运气:

我在部分视图_form.html.erb

中尝试了这个
    <div id="foo">foo</div>
    <a href="#" onclick="Element.toggle('foo'); return false;">toggle foo</a>

我试过

    <div id="foo">foo</div>
    <%= link_to_function('toggle foo', "Element.toggle('foo')") %>

我试过

    <div id="foo" class=foo_class>foo</div>
    <a href="#" onclick="$$('.foo_class').each(Element.toggle);">toggle foo</a>

我试过

    <a href="javascript:void(0);" onclick="showHide('foo');">toggle foo</a>

其中showHide(elementId)定义如下

    <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>

我还尝试使用display none / block相同的showHide函数,而不是隐藏可见性隐藏/可见

我在layouts / application.html.erb

的head部分中有这一行
    <%= javascript_include_tag :defaults %>

我在论坛上发现的这些解决方案都不适合我。

那么,我在这里错过了什么?为什么所有其他解决方案都被证明有效仍然不适合我?

2 个答案:

答案 0 :(得分:2)

我使用此

解决了我的问题
<input type=button value="toggle foo" onclick="showHideDiv('foo');">

感谢大家的帮助。

答案 1 :(得分:1)

如果元素的可见性为“”(意思是未设置,这是默认值),则不会对showHide执行任何操作。这可能是为什么这种方法不起作用的原因。转动一个不可见的物体(它仍会占用你的布局中的空间)或隐藏它(这将使它不占用任何空间)之间也存在差异。

这是做什么的?:

$('foo').toggle();

$('foo').invoke('toggle');

也许您正在使用旧的jQuery库。