0

我正在根据点值汇总技能列表,当我超过点值时,我想闪烁一条消息并取消选中他们选择的框。我一直在尝试使用 .prop("checked", false),但如果不明确说明要取消选中哪个复选框,我似乎无法使其工作。我想使用他们刚刚检查过的那个。

我已经尝试过使用和不使用 checkboxradio(refresh)

http://jsfiddle.net/mattcushing/K5szE/7/

function calculateTotal() {
    var curr = starting;
    var checked = $("input:checked").each(function (item) {
        curr -= +($(this).prev(".amt").text());
    });
    if(curr < 0){
    alert("Please change your options, you can't have a negative value");
    $(this).prop("checked", false).checkboxradio("refresh");
    }
    else{
    $("#remaining").text(curr);
    }
4

2 回答 2

1

在这里演示

您正在this断章取义地使用关键字。尝试从事件处理程序中返回值calculateTotal() 并使用this关键字。

$("input[type=checkbox]").click(function () {
        changeCostRogue();
        changeCostWarrior();
        changeCostMage();
        var curr = calculateTotal();
        if(curr < 0){
        alert("dude, no negatives!");
        $(this).prop("checked", false).checkboxradio("refresh");
        }
        else{
        $("#remaining").text(curr);
        }
    });

function calculateTotal() {
        var curr = starting;
        var checked = $("input:checked").each(function (item) {
            curr -= +($(this).prev(".amt").text());
        });
        return curr;
}
于 2013-07-23T12:00:44.850 回答
0

您所要做的就是发送this到您的 calculateTotal 函数

calculateTotal(this);

并更改函数的签名,例如

function calculateTotal(this) {
于 2013-07-23T12:03:24.850 回答