Отфильтруйте один раскрывающийся список HTML на основе другого раскрывающегося списка. - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть простой скрипт PHP с формой, которая имеет два поля выбора, оба из которых являются просто числовыми значениями. Скрипт также имеет максимум для суммы двух полей. Я пытаюсь динамически фильтровать второй выпадающий список, чтобы пользователь не мог выбрать больше, чем максимум. Например, если мой максимум 10, в первом выпадающем списке будет 1-10. Пользователь, выбравший 6, сможет выбрать 0-4 только во втором выпадающем списке.

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

Пример кода (предположим, уже определен максимальный $):

<script type="text/javascript">
    var max = <?php echo $maximum; ?>;
</script>

<select name="dropdown1" id="dropdown1">
<?php
for ($i = 1; $i <= $maximum; $i++)
{   
    echo '<option value="'.$i.'">'.$i.'</option>';  
}
?>
</select>
<select name="dropdown2" id="dropdown2">
<?php
for ($i = 0; $i <= $maximum; $i++)
{   
    echo '<option value="'.$i.'">'.$i.'</option>';  
}
?>
</select>

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

Теперь у меня есть следующий фрагмент jquery в его собственном файле .js:

$(document).ready(function() {
// var max ??
$("#dropdown1").change(function() {
    var selectedVal = $(this).find("option:selected").val();
    $("#dropdown2 option").removeAttr("disabled").removeAttr("selected");
    $("#dropdown2 option").each(function() {
        if($(this).val() > max - selectedVal*1)
            $(this).attr("disabled", "disabled");

    });       
});
});

Однако я немного застрял, получая максимум $ из моего PHP-скрипта в jQuery. Я полагаю, что мне нужно создать переменную JavaScript, но я не совсем уверен, как передать ее в jQuery. Я могу понять, как это сделать, если бы я встроил jQuery в тот же PHP-скрипт, просто повторив его, но не совсем уверенный в передаче его в качестве параметра.

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

Здесь - рабочая скрипка.И соответствующий код jQuery:

$(document).ready(function() {
    $("#select1").change(function() {
        var selectedVal = $(this).find("option:selected").val();

        $("#select2 option").each(function() {
            if($(this).val() >= selectedVal)
                $(this).attr("disabled", "disabled");

        });
    });
});
0 голосов
/ 08 февраля 2012

Я обновляю код из legendofawesomeness для вашего случая

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...