-1

我有两个选择表单域。一个是“price_from”,另一个是“price_to”。问题是我想阻止用户选择例如price_from“10000”和price_to“1000”,所以基本上我必须找到一些基于“price_to”值设置“price_to”字段值的javascript函数。即:如果我选择 price_from ="3000",price_from 字段将显示来自“4000”的值。当然反之亦然。如果有人再次更改“price_to”或“price_from”字段。

4

2 回答 2

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/

编辑:我在每个选择中插入了一个自定义属性来表示它们被绑定的选择。

于 2012-07-23T19:27:12.070 回答
0

这是 html 代码。@davidbuzatto 您的代码正在运行,但尝试选择 price_from 10000 和 price to 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>
于 2012-07-23T19:45:26.743 回答