2010-08-16 4 views
3

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

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

Пример кода:

<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'); 
    }); 
}); 
+0

Что именно не работает на вашей странице? – ysth

+0

Спасибо за ответ, нажав на кнопку, значение не перемещается в другом месте. – haltman

ответ

0

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

$(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'); 
    }); 
}); 

});

благодарит всех за помощь!

1

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

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

Спасибо за ваш ответ. Джеймс Уайзман. Я получаю странный ответ от предупреждений: первая правильная работа дает мне количество выбранных элементов, второе значение количество символов, третье возвращает только первый символ – haltman

Смежные вопросы