当我在duallist按钮上单击移动/删除时如何获得价值 - JQUERY

时间:2015-12-28 09:18:45

标签: javascript jquery html css twitter-bootstrap

如何在duallistbox上获得单一值而非所有选定值,这是我迄今为止所尝试的

$(document).on("click", ".move", function(){
    alert( $(".agentItems").val() )
});

$(document).on("click", ".remove", function(){
    alert( $(".agentItems").val() )
});

但我希望根据他选择的选项(移动/移除)获得单个值,因此如果我想移动One, wand,我会<option value="1">One, Wand</option>1 alert() 1}}并非所有选择

enter image description here

这是 JSFIDDLE http://jsfiddle.net/sdxaV/19/

这是我使用的DUALLISTBOX:http://www.virtuosoft.eu/code/bootstrap-duallistbox/

编辑1

测试我的jsfiddle,尝试移动One, wand然后您将获得值1,2,4而不是1,请获取有关如何获取移动值的帮助。

2 个答案:

答案 0 :(得分:1)

得到它,感谢@ GNi33, 这是http://jsfiddle.net/sdxaV/26/

var result = $(".agentItems").val();

console.log(result);

$(document).on("click", ".move", function(){
    var diff = arr_diff(result, $(".agentItems").val());

  console.log(diff);

  result = $(".agentItems").val();
});

$(document).on("click", ".remove", function(){
  var diff = arr_diff(result, $(".agentItems").val());

  console.log(diff);
  result = $(".agentItems").val();
});


function arr_diff (a1, a2) {

        a1 = a1 || [];
    a2 = a2 || [];

    var a = [], diff = [];

    for (var i = 0; i < a1.length; i++) {
        a[a1[i]] = true;
    }

    for (var i = 0; i < a2.length; i++) {
        if (a[a2[i]]) {
            delete a[a2[i]];
        } else {
            a[a2[i]] = true;
        }
    }

    for (var k in a) {
        diff.push(k);
    }

    return diff;
};

答案 1 :(得分:0)

我检查了你的小提琴,并在这一行

<select multiple="multiple" name="agentItems" class="agentItems">

您设置了选择倍数。尝试删除它,你应该没事。

更新: 我改变了你的小提琴,并添加了你应该改变的推荐线。它会为您提供最新的选择。不要改变我之前说过的html。

$(document).on("click", ".move", function(){
    var latest_value = $("option:selected:last").val();
    alert( latest_value )//option:selected:last will give you latest value of select so you can use it according to your need
});

$(document).on("click", ".remove", function(){
    var latest_value = $("option:selected:last").val();
    alert( latest_value )//same goes here
});