0

我有一个带有两个选项的选择下拉菜单:是/否(实际上是三个:还有“选择一个选项”没有价值)。然后有一些处理一些变量的复选框(选中时变量被添加到全局变量(称为tot),当未选中时它们被减去)。我希望复选框有两种不同的行为,具体取决于下拉选项是或否。所以我写了这个,但我认为我误解/误解了一些东西,因为它不起作用(当它没有嵌套在更改选择函数中时它起作用)。

<select name="container" id="container">
<option id="none" value="" >Select an option</option>
<option id="no" value="no" >no</option>
<option id="yes" value="yes" >yes</option>
</select>

这是javascript(带有jquery库)

var tot = 0;
$(document).ready(function () {

    $("#container").change(function () {
        var sel = $(this).find(":selected").attr("id")
        if (sel == "no" || sel == "none") {

            $("#in-category-1").click(function () {
                if ($('#in-category-1').is(':checked')) {
                    if (tot < 60) {
                        tot = tot + 2.5;
                    } else if (tot >= 60) {
                        alert('Stop!');
                        $('#in-category-1').attr('checked', false);
                    }
                } else if (tot > 0) {
                    tot = tot - 2.5;
                }
                functionblablabla();
                });
                if (sel == "yes") {

                    $("#in-category-1").click(function () {
                        if ($('#in-category-1').is(':checked')) {
                            if (tot < 50) {
                                tot = tot + 2.5;
                            } else if (tot >= 50) {
                                alert('Stop!');
                                $('#in-category-1').attr('checked', false);
                            }
                        } else if (tot > 0) {
                            tot = tot - 2.5;
                        }
                        functionblablabla2();
                    });
                });
            });

即使在页面加载时默认选择了选项(选项存储在数据库中),也会发生一些事情,所以如果没有选择同样的事情应该发生

    if (($('#no').prop('defaultSelected')) ||  ($('#none').prop('defaultSelected')) ) {
                                $("#in-category-1").click(function () {
                               //same stuff than change select no or select none
                               });
    }

    if ($('#yes').prop('defaultSelected')) {
                                $("#in-category-1").click(function () {
                               //same stuff than change select yes
                               });
    }

我究竟做错了什么?

4

1 回答 1

0

您可以做得更好的几点:

  • 括号
    • 看起来“如果是”应该是大 if 块的一部分
    • 缺少一些关闭的
  • 不要创建全局 VAR
    • 将“tod”变量放入 dom 就绪函数中
  • 分离之前的点击事件(否则如果选项更改多次,事件将汇总)

    $("#in-category-1").off("click");

  • 使用快捷方式获取选定的值

    $(this).val();

小提琴:http: //jsfiddle.net/kmybV/

于 2013-02-15T20:22:01.547 回答