Какой наилучший подход для динамической формы выбора диапазона значений?

#php #forms #dynamic

#php #формы #динамический

Вопрос:

Я создал функцию поиска недвижимости, в которой пользователь будет вводить диапазон цен. Я поместил два поля выбора, чтобы минимизировать ошибки пользователя, одно для минимальной цены, а другое для максимальной цены. Я хочу использовать динамическую форму для дальнейшего минимизации ошибок ввода.

Например, выбор минимальной цены имеет следующие значения:

  • 100 тысяч долларов (по умолчанию)
  • 200 тысяч долларов
  • 300 тысяч долларов
  • 400 тысяч долларов
  • 500 тысяч долларов
  • 600 тысяч долларов
  • 700 тысяч долларов
  • 800 тысяч долларов
  • 900 тысяч долларов
  • $ 1 млн

В то время как выбор максимальной цены такой же, как указано выше, но без $ 100 тыс. и с дополнительными $ 2 млн , со значением по умолчанию в $ 200 тыс.

Чего я хочу, так это иметь функцию, которая будет не только проверять запись на странице, но и динамически изменять параметры выбора по максимальной цене. Таким образом, когда пользователь выбирает минимальную цену, параметры поля максимальная цена не будут отображать выбранную минимальную цену и ниже.

Итак, в начале, если пользователь выбирает минимум в 500 тысяч долларов, максимум автоматически изменяется на 600 тысяч долларов при удалении из параметров всего, что ниже этого.

Какой наилучший подход для этого?

Заранее спасибо!


Обновление: Я следовал ответу Джейка, и я не могу заставить его работать.

Вот код формы и скрипта:

 <form name="search" action="/search/" method="get">
<label>Price Range: </label>
Between:
<select name="min_price"> 
<option value="1">1M</option> 
<option value="2">2M</option> 
...
<option value="15">15M</option> 
<option value="20">20M</option> 
</select> 
and
<select name="max_price"> 
<option value="2">2M</option> 
<option value="3">3M</option> 
... 
<option value="30">30M </option> 
</select> 
...
</form>

<script type="text/javascript"> 
$("#min_price").change(function(){
    var min = $(this).val();
    $("#max_price").find("option").each(function(){
        if (this.value <= min) {
            $(this).hide();
        }
        else {
            $(this).show();
        }
    });
});
</script> 
  

Я использую WordPress, и у него есть jQuery 1.4.4. Как я могу заставить это работать? Есть ли ошибка в моем HTML-коде?

Комментарии:

1. добавьте атрибуты id в id=»min_price» и id=»max_price» к элементам <select>

Ответ №1:

Вы можете сделать это на стороне клиента (в браузере) с помощью JavaScript. Например, с помощью jQuery:

 $("#min_price").change(function(){

    var min = $(this).val();
    $("#max_price").find("option").each(function(){
        if (this.value <= min) {
            $(this).hide();
        }
        else {
            $(this).show();
        }
    });

});
  

Комментарии:

1. this.value вероятно, это будет строка (с префиксом $ )

2. нет, если документ <select><option label=»$ 200K» value =»200″>$ 200K</option>… </select>

3. спасибо за это! Я знаю, что это правильный подход, но я думаю, что где-то в моем коде есть конфликт, из-за которого функции формы jQuery не работают должным образом. Если вы не возражаете, можете взглянуть на мой сайт .