1

我有一些我写的脚本,它也完全按照我的意愿工作,但它的作用似乎很长:http: //jsfiddle.net/x6xbymmL/

$(".class2").prop("disabled", true);
$(".class3").prop("disabled", true);

$('input[class^="class"]').click(function() {
var $this = $(this);

if ($this.is(".class1")) {
    if ($(".class1:checked").length > 0) {
        $(".class1").prop("disabled", true);
        $(".class2").prop("disabled", false);
        $(".class3").prop("disabled", false);
    } else {
        $(".class1").prop("disabled", false);
        $(".class2").prop("disabled", true);
        $(".class3").prop("disabled", true);
    }
}

if ($this.is(".class2")) {
    if ($(".class2:checked").length > 0) {
        $(".class1").prop("disabled", true);
        $(".class2").prop("disabled", false);
        $(".class3").prop("disabled", true);
    } else {
        $(".class1").prop("disabled", true);
        $(".class2").prop("disabled", false);
        $(".class3").prop("disabled", false);
    }
}

if ($this.is(".class2")) {
    if ($(".class2:checked").length > 1) {
        $(".class1").prop("disabled", true);
        $(".class2").prop("disabled", true);
        $(".class3").prop("disabled", true);
    } else {
        $(".class1").prop("disabled", true);
        $(".class2").prop("disabled", false);
        $(".class3").prop("disabled", true);
    }
}

if ($this.is(".class3")) {
    if ($(".class3:checked").length > 0) {
        $(".class1").prop("disabled", true);
        $(".class2").prop("disabled", true);
        $(".class3").prop("disabled", true);
    } else {
        $(".class1").prop("disabled", true);
        $(".class2").prop("disabled", false);
        $(".class3").prop("disabled", true);
    }
}

});

我想弄清楚我是否已经尽我所能写了它,或者是否有更好的方法?还有一个好处是禁用组中的所有其他人,除了选中的那个,这样如果他们检查了错误的选项,用户可以返回......我真的很难让它工作:/

4

1 回答 1

0

这是您的代码的一个显着缩短的版本,具有完全相同的功能。在这里看到它的工作:http: //jsfiddle.net/x6xbymmL/1/

$(".class2, .class3").prop("disabled", true);
$('input[class^="class"]').click(function () {
    if ($(".class1:checked").length > 0) {
        $(".class1").prop("disabled", true);
        $(".class2, .class3").prop("disabled", false);
    }
    if ($(".class2:checked").length > 0 || $(".class3:checked").length === 1) {
        $(".class3").prop("disabled", true);
    }
    if ($(".class3:checked").length === 1 || $(".class2:checked").length === 2) {
        $(".class3, .class2").prop("disabled", true);
    }
});

对于你想要完成的事情,你真的有太多的 if 语句。它很有效,而且你很彻底,但大部分都是不必要的。

于 2014-11-19T16:23:13.620 回答