2012-09-24 32 views
1

我有一个将值数组映射到不同的单选按钮的困难情况。这里是HTML,我将这些变量重命名为泛型,而不是特定于我现在制作的特定Web表单。将值映射到不同的单选按钮组

<input type="radio" NAME="type" id="rbtA"><span id="txtA">Alt. A</span> 
<input type="radio" NAME="type" id="rbtB"><span id="txtB">Alt. B</span> 
<input type="radio" NAME="type" id="rbtC"><span id="txtC">Alt. C</span> 

<input type="radio" NAME="COM" id="rbtSub1"><span id="txtSub1">SubAlt. 1</span> 
<input type="radio" NAME="COM" id="rbtSub2"><span id="txtSub2">SubAlt. 2</span> 
<input type="radio" NAME="COM" id="rbtSub3"><span id="txtSub3">SubAlt. 3</span> 
<input type="radio" NAME="COM" id="rbtSub4"><span id="txtSub4">SubAlt. 4</span> 

<input type="radio" NAME="Coupling" id="rbtSubSub1"><span id="txtSubSub1">Yes</span> 
<input type="radio" NAME="Coupling" id="rbtSubSub2"><span id="txtSubSub2">No</span> 

<SELECT id="selectCom" style="width: 160" NAME="Communication"><OPTION selected="selected"></OPTION></SELECT> 

如果选择替代B或C,单选按钮rbtSub1-rbtSub4将出现。如果选择C,则rbtSubSub1和rbtSubSub2将保持隐藏状态,但如果选择了B (SubAlt.1或SubAlt.2),则会出现rbtSubSub1和rbtSubSub2。要使这些按钮出现/消失没有问题,问题是根据选择的单选按钮将正确的备选映射映射到selectbox selectCom。

如果selectCom替代仅靠rbtSub1 - rbtSub4,映射会很容易:

var arraySub1=["1A", "1B", "1C"]; 
//(correspondingly for sub2 and sub3)... 
var arraySub4=["4A", "4B", "4C"]; 
var mapCom = { rbtSub1 : arraySub1, rbtSub2 : arraySub2, rbtSub3 : arraySub3, rbtSub4 : arraySub4 } 

然后在jQuery代码的某个地方,这取决于子替代用户我想有这样的代码来填充selectCom选择(这个工程,我用的形式是其他地方):

$('#rbtSub1, #rbtSub2, #rbtSub3, #rbtSub4').change(function() { 
    $("#selectCom option").remove(); 
    $.each(mapCom[this.id], function(i, val) { 
    var opt = $("<option />"); 
    opt.appendTo($("#selectCom")).text(val).val(val); 
    }); 
}); 

棘手的部分是,如果选择rbtB (rbtSub1或rbtSub2),我需要填充selectCom DEP结束于用户是选择rbtSubSub1还是rbtSubSub2,但如果选择rbt B和(rbtSub3或rbtSub4),则需要根据用户是否选择rbtSub3或rbtSub4来填充selectCom。此外,如果选择rbtC,我只想填充selectCom,具体取决于选择哪一个:rbtSub1,rbtSub2,rbtSub3或rbtSub4。

我已经尝试映射单选按钮不在相同的映射代码行中的同一级别,但这会导致错误,当我尝试运行窗体。

任何好的建议,以我如何能够实现这一目标?

+0

经过一个良好的睡眠和一些更多的疑难解答我想我已经发现,如果不是我原来的问题的解决方案,至少有一个有效的解决方法。这不是优雅,但它的作品。 我创建了一组三个按钮,其中一个在rbtA被选中时可见,一个在rbtB被选中时可见等。对于用户来说,按钮看起来是相同的。然后我创建三个映射和三个函数来填充selectCom,每个函数对应三组按钮之一。我还没有完全实现它,我可能不得不为subub按钮创建第四个函数。 繁琐,但它的工作原理。 – Sorin

回答

0

最好的解决方案将是在PHP ......分手的HTML,把一个IF语句在那里,如果值X X选择回声风格=“显示:无”

+0

问题是我的公司是国际关注的一部分,我们的本地办公室无法将php文件上传到我们的本地服务器。我真的不明白这个规则有什么好的理由,但事实就是这样。 – Sorin

相关问题