Как отправить содержимое списка (измененного jQuery) в HTML? - PullRequest
0 голосов
/ 01 января 2012

Я реализовал пару списков выбора на странице и добавил кнопки добавления / удаления.jQuery javascript прост и хорошо работает:

function add(){
    $('#pool option:selected').each( function() {
            $('#chosen').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>");
        $(this).remove();
    });
});
function remove(){
    $('#chosen option:selected').each( function() {
            $('#pool').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>");
        $(this).remove();
    });
});

Я хочу отправить содержимое списка «выбранных» на мой сервер.

Я попытался разместить списки в форме.Когда я отправляю форму, сервер ничего не получает, если я фактически не выбрал элементы в списке «выбранных».

Вот фрагмент: ...

function preSubmit(){
$('#chosen').each(function(){
    $(this).attr("selected","selected");
});
};

Не сработало!Как я могу получить элементы из списка «выбранных», доставленные на сервер?

1 Ответ

1 голос
/ 01 января 2012

$(this).attr("selected","selected"); может применяться только к одному option одновременно. Вы эффективно переопределяете его на каждом этапе цикла.

Вы не предоставили достаточно html, но это должно быть больше или меньше того, что вам нужно:

function preSubmit()
{
    var form = $('#chosen').closest('form');

    $('#chosen option').each(function()
    {
        form.append('<input type="hidden" name="' + $(this).val() + '" value="' + $(this).text() + '" />');
    });
};

P.S. Рассмотрите возможность кэширования ваших селекторов.

В дополнение к этому вы должны использовать prop вместо attr (если вы используете последнюю версию jQuery).

...