2011-11-14 34 views
0

このセクションでは、ユーザーがWebサイトから取得する検索結果のフィルタリングを定義できます。3つの依存入力テキストボックスの無効/有効化

  1. ハードディスクの価格のハードディスクのの($)
  2. 容量(GB)
  3. マックス。 1 GBあたりのコスト

3つはすべてユーザーが変更できます。しかし、3つの値を定義する2つの独立変数があるので、3つのフィルタ値を個別に選択すると0の結果が得られる。すなわち、 $300 harddisk, 100GB & Lesser than $1/GB。解決策は、ユーザが一度に3つのフィルタオプションのうちの任意の2つを変更し、自動的に第3のフィルタの値を決定することのみを可能にすることである。

問題:は、私はこのような動作を無効/有効にする必要があります。彼は、フィルタ#3($5/GB)の値を選択したときに、ユーザ選択フィルタ#1(price of harddisk = $100が)、その後、#2(harddisk capacity = 100GB)をフィルタすると、# 1は自動的に$500に再計算されます。フィルター#1(harddisk cost = $200)を変更する場合、フィルター#2はフィルター#1と#3に基づいてCapacity of Harddisk = $40に変更されます。

これをjQuery/Javascriptでどうすれば実現できますか?

私の考え: 2つの値だけを含むスタックのように、フィルタが選択された順番で使用できます。ユーザがフィルタ#1、#2を選択すると、スタックには{1,2}が含まれているので、フィルタ#3はフィルタ#1と#2を使用して計算されます。ユーザーが#3を選択すると、1がスタックからプッシュされ、3が入力されて{2,3}となるので、フィルター#1はフィルター#2と#3を使用して計算されます。しかし、どういうわけか、何らかの理由でこの方法で何かがうまくいかないように思われる...

+1

あなたはそれが以前に入力した値を上書きすることになるで明確な順序がある:一致するdivが、このような単純な関数に適切なdiv要素名を渡すことで表示することができますか?あなたの例では、1と2を入力した後に3を加えて1に上書きしたのですが、代わりにその状況で2を上書きできますか? – Marlin

+0

これは2の古いものを上書きします。したがって、あなたが指摘したケースでは、1が最初に選択されてから2に上書きされるだけです。 – Nyxynyx

答えて

0

また、可能性ごとに隠れたdivを持つこともできます。

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

それらのすべては、noneの表示値から始めます、そしてその選択がなさとされている場合、彼らはそれがあなたのjs機能を起動する計算]ボタンをクリックしてください。この関数は!= nullの2つの入力を確認し、その値を使用して答えを計算して表示します。

function ShowContent(d) 
{ 
    document.getElementById(d).style.display = "block" 
} 
関連する問題