Jquery取消选中用户上次选择的选项

时间:2013-03-14 09:05:37

标签: javascript jquery checkbox

我有一个多选框,其中包含服务和持续时间。如果用户选择某些服务,则会捕获其持续时间,如果持续时间超过限制,则会生成警报。如何取消选中用户上次检查的值,以便在超出限制时不重置持续时间。我的代码是:

jQuery('.check-service').click(function () {

    serviceselected = jQuery("input.check-service:checked").length;
    serviceduration = 0;

    jQuery('input.check-service:checked').each(function () {

        serviceduration = parseInt(jQuery(this).val()) + parseInt(serviceduration);
        if (selectvalues == '') {
            selectvalues = jQuery(this).attr('title');
            serviceids = jQuery(this).attr('id');
        } else {
            selectvalues = selectvalues + "," + jQuery(this).attr('title');
            serviceids = serviceids + ", " + jQuery(this).attr('id');
        }

    });

    if (serviceduration >= '600') {
        alert("Selected Service is more than available time slot.");
        jQuery('input.check-service').attr('checked', false);
        console.log();


    }

目前取消选中所有已检查的值。我只想取消选中上一个选定的值。 在此先感谢。

2 个答案:

答案 0 :(得分:1)

您无法将最后选中的复选框存储在某个全局变量中。

var $lastChecked;

$(".check-service").on("change", function () {
    if ($(this).attr("checked") == "checked") {
        lastChecked = $(this);
    }
    //your logic
    //...
    //now when you have to uncheck:
    $lastChecked.removeAttr("checked");
})

答案 1 :(得分:1)

请尝试以下代码:

jQuery('#CheckboxID').click(function(){     //instead of class use id
    serviceselected = jQuery("input.check-service:checked").length;
    serviceduration = 0;
    jQuery('input.check-service:checked').each(function () {
        serviceduration = parseInt(jQuery(this).val()) + parseInt(serviceduration);
        if(selectvalues == '') {
            selectvalues = jQuery(this).attr('title');
            serviceids = jQuery(this).attr('id');
        } 
        else {
            selectvalues = selectvalues + "," + jQuery(this).attr('title');          
            serviceids = serviceids + ", " + jQuery(this).attr('id');
        }

    });
    if (serviceduration >= '600') {
        alert("Selected Service is more than available time slot.");
        jQuery(this).attr( 'checked', false );
        console.log();
    } 
});