Снятие выбранных опций с JavaScript при изменении - PullRequest
5 голосов
/ 28 февраля 2012

Перед вами -1, потому что это такой простой вопрос, читайте дальше, потому что я потратил некоторое время на поиск и не могу понять это.То, что у меня есть, это 5 полей выбора.Результаты каждого зависят от того, что выбрано перед ним.Нет кнопки отправки.Мне просто нужно изменить в зависимости от того, что выбрано в предыдущем окне, и пока у меня есть это.Ох, и результаты извлекаются из базы данных.Проблема заключается в том, что при выборе опции в поле, скажем, в блоке 1 появляются параметры блока 2, но когда вы снова выбираете параметр в блоке 1, эти параметры просто накладываются на другие.Мне нужно, чтобы они очистились, когда его снова изменили.Я выложу js, который у меня есть, и если вам нужно что-то еще, просто спросите.

ps я получаю опции, используя php-mysql.pss этот сайт должен быть закончен к завтрашнему дню, так что я вроде как в спешке.Пожалуйста, не тратьте время на то, чтобы сказать мне, что это глупый вопрос или нет.

Заранее спасибо за помощь.

$(function () { //When the page is finished loading run this code
    $('#country').change(function () {
        $.ajax({
            url: "<!--Base url taken out-->/discovery/aLoad",
            success: function (data) {
                eval(data);
            },
            error: function () {
                alert('failed');
            },
            data: {
                country: getSelectValues('#country')
            },
            type: 'POST'
        });
    });
 });

     function changeSearchBar (newBar) {
    //remove the crap
    function ClearOptions(country)
    {
    document.getElementById('country').options.length = 0;
    }

    for (var i = 0; i <= newBar.length; i++) {
        newBar[i].id = newBar[i][0];
        newBar[i].name = newBar[i][1];
        $('#group').append(
            $('<option></option>').attr('value', newBar[i].id).text(newBar[i].name)
        );
    }
     }

     function getSelectValues (sId) {
    var str = "";

    $(sId +" option:selected").each(function () {
        str += $(this).val() + ",";
    });

    return str.replace(/.$/g, '');
}

Ответы [ 2 ]

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

Из того, что я понимаю из вашего длинного поста, вам просто нужно удалить все select дочерние, прежде чем начинать добавлять новую опцию из запроса AJAX.

Попробуйте что-то подобное перед циклом for:

$('#group').html('');​

Демонстрация: http://jsfiddle.net/57TYu/2/

0 голосов
/ 28 февраля 2012

Вот, пожалуйста, я думаю, это в основном то, что вы пытаетесь сделать:

Как удалить все параметры из поля выбора, а затем добавить один вариант и выбрать его с помощью jQuery?

По сути, найдите теги 'option' внутри select и удалите их.

$('select').find('option').remove()

очистит все выбранные поля.

Это добавит данные, которые, как предполагается, являются опциями на их месте:

$('select').find('option').remove().end().append(data);

Я думаю, это то, что вы ищете.

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