JQuery и мульти-выбор - PullRequest
       0

JQuery и мульти-выбор

3 голосов
/ 16 августа 2010

На моей странице я должен выбрать значения параметров, загружаемых функцией $ .post. У меня есть кнопка для «перемещения» данных из одного выбора в другой. Пример работает на новой странице, но не на моей. Выбранные элементы не перемещаются к другому выбору после щелчка.

Вопрос в том, есть ли другой способ сделать это или как я могу исправить свою страницу, чтобы она работала?

Пример кода:

<div style="float:left; border:1px solid red;">
    <div style="background-color:red; color:white;" align="center">INFORMATIVE</div>
    <div id="prop_info" style="float:left;">
        <div style="border:1px solid red;">PROPOSTI</div>
        <div style="float:left"><select multiple id="sel_info_pro" name="sel_info_pro" class="sel"><option value="b">a</option><option>b</option></select></div>
        <div style="float:left;"><a href="#" id="add_info"> >> </a><br><a href="#" id="remove_info"> << </a></div>
    </div>  
    <div id="conf_info" style="float:left;">
        <div style="border:1px solid red;">CONFIGURATI</div>
        <select multiple id="sel_info_conf" name="sel_info_conf" class="sel"></select>
    </div>
</div>
$(document).ready(function(){
    $('#add_info').click(function() {
        return !$('#sel_info_pro option:selected').remove().appendTo('#sel_info_conf');
    });
    $('#remove_info').click(function() {
        return !$('#sel_info_conf option:selected').remove().appendTo('#sel_info_pro');
    });
});

Ответы [ 2 ]

1 голос
/ 16 августа 2010

Небольшое руководство, которое может помочь.Если вы сделали следующее:

alert($('#sel_info_pro option:selected').length);

Тогда вы получите 0, независимо от того, сколько вы выбрали

Выбранные параметры фактически сохраняются против val() объекта jQuery:

alert($('#sel_info_pro option').val().length); //gives you the count of options selected
alert($('#sel_info_pro option').val()[0]); //gives you the value of the first option selected

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

Эта ссылка также может помочь: http://marcgrabanski.com/articles/jquery-select-list-values

0 голосов
/ 16 августа 2010

Я нашел свое рабочее решение:

$(document).ready(function(){
$('#add_info').click(function() {
    var foop = []; 
    $('#sel_info_pro option:selected').each(function(z, selected){ 
        foop[z] = $(selected).val(); 
        return !$('#sel_info_pro option:selected').val(foop[z]).remove().appendTo('#sel_info_conf'); 
    });
}); 
$('#remove_info').click(function() { 
    var foo = []; 
    $('#sel_info_conf option:selected').each(function(i, selected){ 
        foo[i] = $(selected).val(); 
        return !$('#sel_info_conf option:selected').val(foo[i]).remove().appendTo('#sel_info_pro'); 
    });
});

});

спасибо всем за помощь!

...