如何用jquery交换选择列表中的值?

时间:2012-10-22 09:47:47

标签: javascript jquery

我有两个简单的选择列表,并希望添加一个选项来交换它们中的值。所以,第一个列表是e。 G。值“ONE”,另一个列表的值为“TWO”。单击“交换”按钮时,第一个应具有值“TWO”,第二个应具有值“ONE”。

这是jsFiddle:http://jsfiddle.net/YPyRF

以下是HTML代码:

<div class="form-item-from">
  <label for="form-item-from">From </label>
 <select class="form-select" id="form-item-from"><option value="ONE">ONE</option></select>
</div>

<div class="form-item-to">
  <label for="form-item-to">From </label>
 <select class="form-select" id="form-item-to"><option value="TWO">TWO</option></select>
</div>

<a href="">Swap values</a>

这是js代码(来自Is there a native jQuery function to switch elements?):

jQuery("#form-item-from").after(jQuery("#form-item-to"));

但是,在这种情况下,这不起作用。此外,该功能不应该取决于选择列表或交换按钮的位置(我找到了一个解决方案,其中交换按钮必须在两个列表之间)。

3 个答案:

答案 0 :(得分:5)

这样的事情会起作用:

$("#SwapButton").click(function(e) {
    e.preventDefault();//This prevents the A tag from causing a page reload

    //Get the values
    var fromVal = $("#form-item-from option:selected").val();
    var fromText = $("#form-item-from option:selected").text();
    var toVal = $("#form-item-to option:selected").val();
    var toText = $("#form-item-to option:selected").text();

    //Set the values
    $("#form-item-from option:selected").val(toVal);
    $("#form-item-from option:selected").text(toText);
    $("#form-item-to option:selected").val(fromVal);
    $("#form-item-to option:selected").text(fromText);
});​

Here is your fiddle, updated

注意:这只会切换所选的option项。如果这不是你想要的,那么我就会误解你,你可能会更好地使用Adam的解决方案。 Here is a better example说明了它只交换选定值的事实。

答案 1 :(得分:2)

尝试这样的事情:jsfiddle

点击链接时...
1)将#form-item-from中的所有选项保存到变量
中 2)将#from-item-to中的所有选项保存到变量
中 3)使用#to
中的选项更新#from 4)使用#from

中的选项更新#to
$(function() {
    $("a").click(function() {
        var selectOne = $("#form-item-from").html();
        var selectTwo = $("#form-item-to").html();

        $("#form-item-from").html(selectTwo);
        $("#form-item-to").html(selectOne);
        // stops the link going anywhere
        return false;
    });
});

答案 2 :(得分:2)

试试这个,

$("a").click(function(e){
    e.preventDefault();        
    var a = jQuery("#form-item-from").html();
    var b = jQuery("#form-item-to").html();
    jQuery("#form-item-from").html(b);
    jQuery("#form-item-to").html(a);
})​

演示:http://jsfiddle.net/jQACe/3/