2011-06-22 47 views
0

我有了這個代碼,將動態最大值爲兩個文本框改變:2盒,2個動態最大值,當一個被設置

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),則切換到另一個框。

說一個客戶在第一個箱子裏輸入「150」,那麼這個箱子會自動分配max2「200」 - 但是我想要的是,如果客戶在第二個箱子中也輸入「150」或高於max1的任何值那麼它應該成爲最大值2,這意味着第一個箱子會從max1降到「150」到「100」。反之亦然。

希望這是可以理解的,否則讓我知道,我會盡力解釋它。

+0

如果我正確理解你真正想要的是在水平還是垂直佈局中限制大小? – Variant

+0

是的,雖然我真的在這裏尋找的是一種方式來覆蓋設置的最大值時,值更高。 – Michael

+0

重寫最大值不管什麼值?在當前設置中400將是合法的? – Variant

回答

0

的想法是,而不是抱着變量firstboxsecondbox持有指針變量,以符合MAX1 max1box盒子,符合MAX2,max2box盒子。

在邏輯要求切換最大值的情況下,您只需切換指針即可。

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

我無法讓它工作變體。在你的例子中,我可以輸入任何我喜歡的,甚至超過最大值。理論上,當我離開盒子時它應該降到200,但是我輸入「125258」並保持不變。 – Michael

+0

對我很好用......您使用的是哪種瀏覽器?它在jsfiddle中爲你工作嗎? – Variant

+0

我使用的Firefox - 只是在IE中測試它,它的工作原理。任何機會,你可以讓它在FF工作,Variant? – Michael