我有一个表格可以帮助用户在最后选择一个特定的东西,但是当用户填写第一个选项时,下面的其他选项会发生变化。像这样的东西:
Type:
{
t1:{
Number of X:{
1:{...}
2:{...}
}
Number of Y:{...}
}
t2:{
Number of X:{
100:{...}
200:{...}
}
Number of Y:{...}
}
}
用户有字段 Type 有选项 t1 和 t2,当他们选择 t1 时,字段“X 的数量”将填充 1 和 2,如果他们选择 t2,则字段“X 的数量”将填充 100和 200,依此类推。一些选择取决于多个字段,它不是直接依赖(例如,如果用户选择“X 数”= 100 那么 Foo 是“A”,否则,Foo 可以是“A”、“B”或“C”,但 Foo 不低于“X 数”)。
我尝试了一个非常幼稚的实现,我将在每个字段上设置事件侦听器并查看它们的更改,但最终代码开始失控,我有一堆$("#foo").change(function(){...});
并且它并不立即明显地听这个的字段是bar
而不是fbar
.
我也尝试过 JSON(如上面的示例),但是有很多重复,树越深,可能性越多,我必须一次又一次地编写相同的字段。有时选择t1
会直接改变一个选项,即使它不是直接在它下面,即使它通常完全依赖于另一个字段,这在 JSON 中是更多的重复。
我该如何解决这个问题?有可读的解决方案吗?代码太多不是问题,只要能看懂代码,理解依赖关系和作用。
一个代码示例(有点像我现在的代码):
HTML:
<select id="type">
<option value=1>a</option>
<option value=2>b</option>
</select>
<select id="numOfX">
</select>
<select id="numOfY">
</select>
js:
$("#type").change(function()
{
if($("#type").val() == 1)
{
$("#numOfX").append(new Option(1, "1", false, false));
$("#numOfX").append(new Option(2, "2", false, false));
}
else if($("#type").val() == 2)
{
$("#numOfX").append(new Option(1, "100", false, false));
$("#numOfX").append(new Option(2, "200", false, false));
}
});
$("#numOfX").change(function()
{
...
});