2011-06-22 8 views
0

に設定されているときに変更する2つのダイナミック最大値Iは、2つのテキストボックスのための動的な最大値を設定し、このコードを持っている:だけ私は最大を持っているしたいと思い、それは非常にうまく機能2箱、1が

var length = document.getElementById('firstBox'), 
    width = document.getElementById('secondBox'); 
    max1 = 100; 
    min1 = 20; 
    max2 = 200; 
    min2 = 10; 

length.onchange = function() { 
    var maxValue, minValue; 

    if (width.value < max1) { 
     maxValue = max2; 
     minValue = (width.value < min1) ? min1 : min2; 
    } else { 
     maxValue = max1; 
     minValue = min1; 
    } 
    if (this.value > maxValue) { 
     this.value = maxValue; 
    } 
    if (this.value < minValue) { 
     this.value = minValue; 
    } 
}; 

width.onchange = function() { 
    var maxValue, minValue; 

    if (length.value < max1) { 
     maxValue = max2; 
     minValue = (length.value < min1) ? min1 : min2; 
    } else { 
     maxValue = max1; 
     minValue = min1; 
    } 
    if (this.value > maxValue) { 
     this.value = maxValue; 
    } 
    if (this.value < minValue) { 
     this.value = minValue; 
    } 
}; 

を(max2)は、顧客がそのボックス内の最小値(max1)より高い値を入力すると、他のボックスに切り替わります。

顧客がボックス1に「150」と入力した場合、そのボックスには自動的にmax2「200」が割り当てられますが、顧客が次に「150」と入力するか、最初のボックスが "150"から "100"に下がり、max1と同じようにmax2になります。およびその逆。

うまくいけば分かりますが、そうでなければ私に知らせてください。私はそれをよりよく説明しようとします。

+0

私が正しく理解しているのは、サイズを水平または垂直レイアウトのいずれかに制限することです。 – Variant

+0

はい、実際に私がここで探しているのは、値が高くなると設定された最大値を上書きする方法です。 – Michael

+0

は、どのような値を指定しても最大値を上書きしますか? 400は現在の設定で正当なものになりますか? – Variant

答えて

0

アイデアは、代わりmax1boxとMAX2に適合ボックス、max2boxをMAX1に準拠ボックスへのポインタ変数を保持するための変数firstboxsecondboxを保持することです。

ロジックが最大値の切り替えを指示する場合は、ポインタを切り替えるだけです。

var max1box = document.getElementById('length'), 
    max2box = document.getElementById('width'); 
    max1 = 100; 
    min1 = 20; 
    max2 = 200; 
    min2 = 10; 

max1box.addEventListener('change',validateValues); 
max2box.addEventListener('change',validateValues); 

function validateValues() { 

    if (this == max1box && this.value > max1 && this.value > max2box.value) 
    { 
     max1box = max2box; 
     max2box = this; 
    } 

    if (max1box .value > max1) { 
     max1box .value = max1; 
    } 
    if (max1box .value < min1) { 
     max1box .value = min1; 
    }   

    if (max2box.value > max2) { 
     max2box.value = max2; 
    } 
    if (max2box.value < min2) { 
     max2box.value = min2; 
    } 
    } 

現在のアクションでそれを見ることができます切り替えるにはhttp://jsfiddle.net/Hm2Qn/1/

ルールはあなたが必要とする正確に何ではないかもしれませんが、あなたはここからそれを取ることができます。

+0

私はVariantを動作させることができません。あなたの例では、私が好きなものは、最大値以上でも入力できます。理論的には、ボックスを出ると200に下がるはずですが、 "125258"と入力してもそのまま残ります。 – Michael

+0

は私にとって素晴らしい作品です...あなたはどのブラウザを使用していますか?それはjsfiddleであなたのために働くのですか? – Variant

+0

私はFirefoxを使用しています - ちょうどIEでそれをテストし、それは動作します。 FFでも同様に働くことができれば、Variant? – Michael