2012-07-23 49 views
-1

我有兩個選擇表單域。一個是「price_from」,另一個是「price_to」。問題是,我想阻止用戶選擇例如price_from「10000」和price_to「1000」,所以基本上我必須找到一些JavaScript函數,它基於「price_to」值向前設置「price_to」字段值。即:如果我選擇price_from =「3000」,price_from字段將顯示「4000」的值。反之亦然。如果有人再次更改「price_to」或「price_from」字段。Javascript(jQuery)兩個選擇價格從/到範圍

+1

你在用什麼HTML?你可以發佈你已經得到的[JS小提琴](http://jsfiddle.net/),[JS斌](http://jsbin.com/)或類似的演示。而且,而不是兩個鏈接的滑塊,使用一個範圍滑塊不會更容易嗎? – 2012-07-23 19:17:03

+0

我在一個例子中工作。稍等片刻...... – davidbuzatto 2012-07-23 19:18:41

+0

你的代碼在哪裏? – Sparky 2012-07-23 19:31:06

回答

1

試試這個:

HTML:

<select id="from1" relatedTo="to1"> 
    <option value="10">10</option> 
    <option value="20">20</option> 
    <option value="30">30</option> 
    <option value="40">40</option> 
</select> 

<select id="to1" relatedTo="from1"> 
    <option value="10">10</option> 
    <option value="20">20</option> 
    <option value="30">30</option> 
    <option value="40">40</option> 
</select> 

<br/> 

<select id="from2" relatedTo="to2"> 
    <option value="100">100</option> 
    <option value="200">200</option> 
    <option value="300">300</option> 
    <option value="400">400</option> 
</select> 

<select id="to2" relatedTo="from2"> 
    <option value="100">100</option> 
    <option value="200">200</option> 
    <option value="300">300</option> 
    <option value="400">400</option> 
</select> 

的JavaScript:

// function to valide two selects 
function validateSelects(fromSelector, toSelector) { 

    // registering the change event to the "to" select 
    $(toSelector).change(function() { 

     var fromSelector = "#" + $(this).attr("relatedTo"); 
     var toSelector = "#" + $(this).attr("id"); 

     // compares the value of the selected item with the from select 
     if ($(this).val() > $(fromSelector).val()) { 

      // selects the value of the from select 
      $(this).val($(fromSelector).val()); 

     } 

    }); 

    // puts the gui in a valid state 
    $(fromSelector).change(function() { 

     var fromSelector = "#" + $(this).attr("id"); 
     var toSelector = "#" + $(this).attr("relatedTo"); 

     // compares if the value of this field is less than the value of the "to" select 
     if ($(this).val() < $(toSelector).val()) { 

      // if so, change the value of the "to" select 
      $(toSelector).val($(this).val()); 

     } 

    }); 

} 

validateSelects("#from1", "#to1"); 
validateSelects("#from2", "#to2"); 

的jsfiddle:http://jsfiddle.net/davidbuzatto/YNL6R/

編輯:我在每個選擇插入一個自定義屬性來表示它們綁定的選擇。

+1

+1 - 努力。 – undefined 2012-07-23 19:29:30

+1

@Raminson:tks!我更新了答案,現在更好:) – davidbuzatto 2012-07-23 19:35:00

+0

謝謝你,但它工作不正常。這真的很奇怪:)。例如,如果您從「10000」中選擇價格並選擇價格到「9000」就沒關係,但是如果您選擇價格到「1000」,那麼它不是:)。請在我的循環中嘗試下一個答案 – 2012-07-23 19:43:23

0

這是html代碼。 @davidbuzatto你的代碼正在工作,但嘗試選擇price_from 10000和價格1000你會看到。

<select name="pricesFrom" id="pricefrom"><option value="0" selected>Any</option><option value="500">500.00</option><option value="1000">1,000.00</option><option value="2000">2,000.00</option><option value="3000">3,000.00</option><option value="4000">4,000.00</option><option value="5000">5,000.00</option><option value="6000">6,000.00</option><option value="7000">7,000.00</option><option value="8000">8,000.00</option><option value="9000">9,000.00</option><option value="10000">10,000.00</option><option value="11000">11,000.00</option><option value="12000">12,000.00</option><option value="13000">13,000.00</option><option value="14000">14,000.00</option><option value="15000">15,000.00</option><option value="16000">16,000.00</option><option value="17000">17,000.00</option><option value="18000">18,000.00</option><option value="19000">19,000.00</option><option value="20000">20,000.00</option></select></label><label>Price to 
         <select name="pricesTo" id="priceto"><option value="0" selected>Any</option><option value="500">500.00</option><option value="1000">1,000.00</option><option value="2000">2,000.00</option><option value="3000">3,000.00</option><option value="4000">4,000.00</option><option value="5000">5,000.00</option><option value="6000">6,000.00</option><option value="7000">7,000.00</option><option value="8000">8,000.00</option><option value="9000">9,000.00</option><option value="10000">10,000.00</option><option value="11000">11,000.00</option><option value="12000">12,000.00</option><option value="13000">13,000.00</option><option value="14000">14,000.00</option><option value="15000">15,000.00</option><option value="16000">16,000.00</option><option value="17000">17,000.00</option><option value="18000">18,000.00</option><option value="19000">19,000.00</option><option value="20000">20,000.00</option></select> 
+0

嘗試更改後的代碼。當你的問題有新的內容時,只需更新原始內容即可?這些評論用於簡要討論,而不是補充問題;) – davidbuzatto 2012-07-23 20:07:56