我有一个多选框,其中包含服务和持续时间。如果用户选择某些服务,则会捕获其持续时间,如果持续时间超过限制,则会生成警报。如何取消选中用户上次检查的值,以便在超出限制时不重置持续时间。我的代码是:
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();
}
目前取消选中所有已检查的值。我只想取消选中上一个选定的值。 在此先感谢。
答案 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();
}
});