1

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

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


    }

目前它未选中所有选中的值。我只想取消选中最后一个先前选择的值。提前致谢。

4

2 回答 2

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");
})
于 2013-03-14T09:10:15.917 回答
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();
    } 
});
于 2013-03-14T09:13:52.050 回答