JS - 根据计算禁用下拉选项

时间:2017-08-23 22:41:45

标签: javascript jquery

我正在使用此代码创建一系列下拉列表,一次一个。

https://jsfiddle.net/mbus6w11/17/

我使用此代码禁用之前选择的选项:

$("select.options").change(function () {
    $("select.options option[value='" + $(this).data('index') + "']").prop('disabled', false);
    $(this).data('index', this.value);
    $("select.options option[value='" + this.value + "']:not([value=''])").prop('disabled', true);
    $(this).find("option[value='" + this.value + "']:not([value=''])").prop('disabled', false);
    });

这创建了另一个数值(varc),可以添加到每个选项(var3)的总和(总和)中:

if (var3 == 1) {
    varc = 10;
    vartip = 'this is tip1';
} else if (var3 == 2) {
    varc = 20;
    vartip = 'this is tip2';
} else if (var3 == 3) {
    varc = 30;
    vartip = 'this is tip3';
} else if (var3 == 4) {
    varc = 40;
    vartip = 'this is tip4';
} else if (var3 == 5) {
    varc = 50;
...
};
sum += varc;
document.getElementById('result').innerHTML = sum;

但是我还需要根据复杂的计算隐藏选项。每次有一个选项可以使总和超过100,我也需要禁用它(在实际选择之前)

有没有办法实现这个目标?

祝你好运, 若昂

2 个答案:

答案 0 :(得分:2)

我的第一个选择是创建一个在开始和更改时检查内容的函数。

mean

我的下一个选项是使用javascript创建选择框,这样你就可以控制你想要进出的选项框和更干净的东西。 https://jsfiddle.net/mbus6w11/22/

statistics.mean

希望有所帮助

答案 1 :(得分:1)

我认为这对你来说很难,因为这些功能试图做得太多(太大)。通常很好的做小功能,做一个非常有限的工作,然后返回结果。

例如,所有if语句都可以在一个单独的函数中,该函数返回给定选定选项的值。

然后,您可以使用该功能检查每个剩余选项,如果选择它们,可能的总和是多少。如果潜在金额大于100,那么我们禁用该选项。

DEMO :我创建了JSFiddle demo的修改版本,其中我使用上面的建议描绘了我将如何开始解决它。它不完整,我希望看到更多更改,以使代码更具可读性。但我认为你可以从这里解决剩下的问题。如果您需要任何进一步的帮助,请告诉我。

其他提示是查看 switch-statements ,而不是所有if语句。它们是为这种情况而制造的。我还会查看许多变量名称,因为现在它们不是很具描述性。

所有这一切,都是一个相当复杂的问题,所以我知道它可能很容易变成一团糟。