2011-11-14 49 views
0

我有這個部分,用戶可以定義他/她從網站獲取的搜索結果的過濾。切換禁用/啓用3個相關輸入文本框

  1. 硬盤價格($)硬盤(GB)的
  2. 容量
  3. 最大的。每GB成本(美元/ GB)

所有3個都可以由用戶更改。但是,由於有2個獨立變量定義3個值,因此單獨選擇3個過濾器值可能會產生0個結果。即。 $300 harddisk, 100GB & Lesser than $1/GB。解決方案是隻允許用戶在任何時候更改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},所以過濾器#1將使用過濾器#2和#3進行計算。然而,似乎有些東西可能會出錯用這種方法...

+1

是有一定的順序,你會希望它覆蓋以前輸入的值:匹配DIV可以通過傳遞適當的div名稱到一個簡單的函數像這樣顯示?在你的例子中,在輸入1和2之後,加上3就可以覆蓋1,在這種情況下它可以覆蓋2嗎? – Marlin

+0

它將覆蓋2的較老的值。因此,在您指出的情況下,它只能覆蓋1,因爲先選擇了1,然後再選擇了2。 – Nyxynyx

回答

0

你也可以有一個隱藏的div爲每個可能性。

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

他們都將與無的顯示值開始,當他們做出選擇,他們點擊計算按鈕會啓動你的js函數。該函數檢查哪兩個輸入是!= null,並使用它們的值來計算並顯示其答案。

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