使用jquery选择最大选择后禁用复选框
Disabling Checkboxes after selecting the max selection using jquery
我正在尝试在选择最大选择数后禁用此多维数组复选框。
问题是我不知道这个jquery代码中的问题在哪里。
任何形式的帮助都将不胜感激。谢谢:D
这是我的密码。
<script>
$("input[name=chkservicecrew''[<?php echo $ar_serviceID_count;?>'']''['']]").change(function(){
var max= <?php echo $maxSelectedCrew;?>;
if( $("name=chkservicecrew''[<?php echo $ar_serviceID_count;?>'']''['']]]:checked").length == max ){
$("name=chkservicecrew''[<?php echo $ar_serviceID_count;?>'']''['']]").attr('disabled', 'disabled');
$("name=chkservicecrew''[<?php echo $ar_serviceID_count;?>'']''['']]:checked").removeAttr('disabled');
}else{
$("name=chkservicecrew''[<?php echo $ar_serviceID_count;?>'']''['']]").removeAttr('disabled');
}
});
</script>
我创建了下面的解决方案来处理具有更改事件的维度数组中的复选框的这种情况。我使用了面向对象的javascript(特别是jQuery)使其尽可能清晰。这将帮助您用initializeCheckboxEvents
方法附带的事件填充数组的复选框。
看一下代码小心您必须将php代码添加到需要在您的案例中使用的位置http://jsfiddle.net/csdtesting/e0aL8aaz/
如果是二维复选框阵列列表
//Disabling Checkboxes after selecting the max selection using jquery
var Checkbox = function() {
/// <summary>
/// Checkbox class
/// </summary>
var testCheckboxId = "";
var maxCheckboxesPerGroup = 2;
var checkedBoxes = {
0: [],
1: [],
2: []
};
function GetCheckboxId(input) {
//takes the checkbox group id from the name chkservicecrew[0][] = 0
var matches = input.match(/'[('d+)]/);
if (matches.length) {
var num = matches[1];
return num;
} else return "";
}
function CheckIfMaximun(index) {
/// <summary>
/// Checks if current checked checkboxes of this group id is equal to global MAX value maxCheckboxesPerGroup
/// </summary>
var checkedNum = $("input[name='chkservicecrew[" + index + "][]']:checked").length;
//console.log(checkedNum.length);
//console.log(maxCheckboxesPerGroup)
if (maxCheckboxesPerGroup == checkedNum) {
return true;
} else
return false;
}
return {
Start: function(checkedBoxes) {
/// <summary>
/// Start by initializing on change events
/// </summary>
checkbox.Tools.initializeCheckboxEvents();
},
Tools: {
initializeCheckboxEvents: function() {
//Attaches on change events to all checkboxes depend on the group
for (index in checkedBoxes) {
$("input[name='chkservicecrew[" + index + "][]']").each(function() {
//console.log(this);
$(this).change(function() {
//console.log(this.name);
//get the group id
var id = GetCheckboxId(this.name);
//True if equal ,false if not
var isMax = CheckIfMaximun(id);
//console.log(isMax);
if (isMax) {
checkbox.Tools.DisableCheckbox(id);
} else {
checkbox.Tools.EnableCheckbox(id);
}
});
});
}
},
DisableCheckbox: function(checkId) {
//Disables checkboxes that are not checked from checkid group
$("input[name='chkservicecrew[" + checkId + "][]']:not(:checked)").attr('disabled', 'disabled');
},
EnableCheckbox: function(checkId) {
//Enables the checkboxes when checked are less than the global variable
$("input[name='chkservicecrew[" + checkId + "][]']").removeAttr('disabled');
}
}
};
};
//LETS START !!!
var checkbox = new Checkbox();
checkbox.Start();
.container {
width: 600px;
margin: 0 auto;
border: 1px solid green;
padding: 20px;
text-align: center;
}
.container input {
margin: 20px;
padding: 25px;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="container"><b>Group 1</b>
<br/>
<input type='checkbox' name='chkservicecrew[0][]' value='0' />chkservicecrew 00
<input type='checkbox' name='chkservicecrew[0][]' value='1' />chkservicecrew 01
<input type='checkbox' name='chkservicecrew[0][]' value='2' />chkservicecrew 02
<br/><b>Group 2</b>
<br/>
<input type='checkbox' name='chkservicecrew[1][]' value='0' />chkservicecrew 00
<input type='checkbox' name='chkservicecrew[1][]' value='1' />chkservicecrew 01
<input type='checkbox' name='chkservicecrew[1][]' value='2' />chkservicecrew 02
<br/><b>Group 3 </b>
<br/>
<input type='checkbox' name='chkservicecrew[2][]' value='0' />chkservicecrew 00
<input type='checkbox' name='chkservicecrew[2][]' value='1' />chkservicecrew 01
<input type='checkbox' name='chkservicecrew[2][]' value='2' />chkservicecrew 02</div>
**~解决方案第一版~
如果是一维复选框阵列列表**
假设max = 2;
你想要这样的东西(jQuery):
http://jsfiddle.net/csdtesting/z12wqLse/
var maxCheckboxes = 2;
$('input[name="chkservicecrew"]').change(function() {
var checkedNum = $('input[name="chkservicecrew"]:checked').length;
var allCheckoxesChecked = $('input[name="chkservicecrew"]:checked');
var allCheckboxes = $("input[name='chkservicecrew']");
//alert(checkedNum + " - " + maxCheckboxes);
if (checkedNum == maxCheckboxes) {
$(allCheckboxes).attr('disabled', 'disabled');
$(allCheckoxesChecked).removeAttr('disabled');
alert("ooou equals and disable!");
} else {
$(allCheckboxes).removeAttr('disabled');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="chkservicecrew" value="the chkservicecrew" type="checkbox">chkservicecrew
<br>
<input name="chkservicecrew" value="chkservicecrew" type="checkbox">chkservicecrew
<br>
<input name="chkservicecrew" value="chkservicecrew" type="checkbox">chkservicecrew
<br>
<input name="chkservicecrew" value="chkservicecrew" type="checkbox">chkservicecrew
<br>
希望你觉得有用:)!
经过多次测试,我终于自己得到了答案x_x
<script>
$("input[name=chkservicecrew''[<?php echo $ar_serviceID_count;?>'']''['']]").change(function(){
var max= <?php echo $maxSelectedCrew;?>;
if( $("input[name=chkservicecrew''[<?php echo $ar_serviceID_count;?>'']''['']]:checked").length == max ){
$("input[name=chkservicecrew''[<?php echo $ar_serviceID_count;?>'']''['']]").attr('disabled', 'disabled');
$("input[name=chkservicecrew''[<?php echo $ar_serviceID_count;?>'']''['']]:checked").removeAttr('disabled');
}else{
$("input[name=chkservicecrew''[<?php echo $ar_serviceID_count;?>'']''['']]").removeAttr('disabled');
}
});
</script>
相关文章:
- 如何创建只允许用户在选中前一个复选框的情况下选择复选框的复选框验证
- 禁用选择/复选框 当选择/选中另一个时
- 如何使用JQuery按值选择复选框
- jquery选择复选框选择的值
- 取消选中时选择最接近的“从中选择”复选框
- 根据动态值选择和取消选择复选框
- 选择/取消选择复选框,该复选框未按预期使用.coneast('table').find('tbo
- 背景图像切换和隐藏选择复选框
- 如何通过选择复选框和下拉列表用Javascript更改标签值
- 选择复选框的Javascript
- 如何将选择复选框值动态传递给 ajax 调用变量动态发布到 php 变量
- 获取多个选择复选框的值 Javascript
- 翡翠,如果其他速记选择复选框
- jQuery动态选择复选框组onChange
- 按住Shift键并单击以选择复选框范围
- 选中p中的所有复选框:选择复选框菜单
- 选择复选框时显示数据
- 从多个JSON文件中选择复选框时切换标记
- 如何为第一次选择和第二次选择复选框应用不同的颜色
- 如何在HTML中选择复选框时创建弹出窗口