我有一个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中也可以找到。
非常感谢你提出的任何建议。
答案 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';
};