切换禁用/启用3个相关输入文本框

时间:2011-11-14 01:12:23

标签: javascript jquery html forms

我有这一部分,用户可以定义他/她从网站获取的搜索结果的过滤。

  1. Harddisk的价格($)
  2. 硬盘容量(GB)
  3. 最大。每GB成本($ / GB)
  4. 用户可以更改所有3个。但是,由于有2个独立变量定义3个值,因此单独选择3个过滤器值可能会产生0个结果。即。 $300 harddisk, 100GB & Lesser than $1/GB。解决方案是只允许用户在任何时候改变3个过滤器选项中的任何2个,并自动确定第3个过滤器的值。

    问题:我需要这样的启用/禁用行为:当用户选择过滤器#1(price of harddisk = $100)然后过滤#2(harddisk capacity = 100GB)时,他选择过滤器#3($5/GB)的值,#1将自动重新计算为$500。如果他要更改过滤器#1(harddisk cost = $200),则过滤器#2将根据过滤器#1和#3更改为Capacity of Harddisk = $40

    如何在jQuery / Javascript中实现这一目标?

    我的想法:可以使用按照选择过滤器的顺序,只包含2个值的堆栈。当用户选择过滤器#1然后#2时,堆栈包含{1,2},因此将使用过滤器#1和#2计算过滤器#3。当用户然后选择#3时,1被推离堆栈,3进入导致{2,3},因此将使用过滤器#2和#3计算过滤器#1。然而,似乎某种方式可能会出现这种方法的问题......

1 个答案:

答案 0 :(得分:0)

你也可以为每种可能性设置一个隐藏的div。

<div id="opt1" style="display: none;">
<code to make calculation for option 1>
</div> 

所有这些都会以显示值none开始,当他们做出选择并点击计算按钮时,它会启动你的js功能。该函数检查哪两个输入是!= null并使用它们的值来计算和显示它们的答案。可以通过将适当的div名称传递给这样的简单函数来显示匹配的div:

 function ShowContent(d)
 {
  document.getElementById(d).style.display = "block" 
 }