显示值取决于Javascript中2个下拉菜单中的选定值?

时间:2016-08-14 00:27:54

标签: javascript jquery forms drop-down-menu

这是我到目前为止构建的:https://plnkr.co/edit/fnhKUhuTYjUTQgJLnZoT?p=preview

我想在input文本框中显示一个值,该值取决于2个下拉菜单中用户的2个选项。我希望这个值来自values数组:

var values = [1, 2, 0.1, 1, 3, .2, 2, 3,.3];

如果第一个选项是1且第二个选项是2,那么我希望input文本框显示0.1。反之亦然,所以如果第一个选项是2而第二个选项是1,那么我希望0.1成为输出。

如果用户为两个菜单选择相同的值,我不希望发生任何事情。因此,如果用户为两个菜单选择2,那么我希望没有输出

我该如何编程?

编辑:我应该首先将values数组转换为这样的哈希映射:

var values = [(1, 2): 0.1, (1, 3): .2, (2, 3): .3];

1 个答案:

答案 0 :(得分:1)

我希望你不要在我的解决方案中使用jQuery,因为你已将它包含在你的Plunk中。

var $selects = $('select');
var $output = $('#pred');

首先,我将创建一个输入对的地图来输出值。

var values = {
    '1,2': 0.1,
    '1,3': 0.2,
    '2,3': 0.3
};

接下来,我将在选择菜单上收听change事件。在我的change处理程序中,我将选择的值映射到数字数组中。接下来,通过对这个数组进行排序和连接,我应该以升序排列一对数字,并用逗号分隔;一个key,就像我的values对象中的键一样。

最后,我会在结果$output处将values的值设置为key的值。如果values[key]undefined,我将默认为空字符串。

$selects.on('change', function () {
    var key = $selects.map(function (index, el) {
        return Number($(el).val());
    })
        .get()
        .sort()
        .join(',');

    $output.val(values[key] || '');
});