取消用户最后选择的选项

Jquery Uncheck the users last selected option

本文关键字:选项 选择 最后 用户 取消      更新时间:2023-09-26

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

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();

    }

当前未选中所有已选中的值。我只想取消选中上一个选中的值。

试试下面的代码:

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();
    } 
});

不能将上次选中的复选框保存在全局变量中

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");
})