javascript - 根据选择隐藏/显示div

时间:2011-05-16 22:34:27

标签: javascript

我有一个rails表单,用户必须从下拉菜单中选择一个值,并根据该值显示表单元素的其余部分。

<div id="A">
a
b
c
</div>

<div id="B">
x
y
z
c
</div>

<div id="B">
w
a
q
c
</div>

当用户从选择菜单中选择值A时,将显示ID为A的div,其余的div将被隐藏。

问题是在不同的div中重复了一些字段,当用户在div A中输入字段'a'的值时,该值会被div B中的空白值覆盖,尽管div B在视图中是隐藏的。 / p>

我想知道是否可以在不同的div中使用相同的字段,并且只能存储在显示的div中找到的字段的值,即使该字段在其他div中也可以找到。

非常感谢你提出的任何建议。

2 个答案:

答案 0 :(得分:1)

为什么不给字段稍微不同的值,并使用onsubmit函数检查哪一个实际填写。

你有:

A1 b C1 X ÿ ž C2 w ^ A1 q C2

然后在onsubmit上: if(a1!=''){submit a1} 否则如果(a2!=''){submit a2}

对不起,不完全是代码,但是你可以从这里开始。

答案 1 :(得分:1)

当您隐藏div时,请为所有子项启用disabled属性,并在显示div时将其删除。像这样:

var showDiv = function ( id ) {
    var all = [document.getElementById( 'A' ), 
               document.getElementById( 'B' ), 
               document.getElementById( 'C' )],
        cur = document.getElementById( id ),
        inps;

    for (var i = 0, il = all.length; i < il; i++) {

        inps = all[i].getElementsByTagName('input');

        for (var j = 0, jl = inps.length; j < jl; j++) {
            inps[j].setAttribute('disabled', 'disabled');
        }

        all[i].style.display = 'none';

    }

    inps = cur.getElementsByTagName('input');

    for (j = 0, jl = inps.length; j < jl; j++) {
        inps[j].removeAttribute('disabled');
    }

    cur.style.display = 'block';
};