检查所有未禁用
Check All Not Disabled
在此处进行研究后,我发现了检查复选框是否被禁用的代码,我正尝试将其实现到我的代码中,但没有成功。
HTML:
<input type="checkbox" name="file1" id="pdf1" class = "pdffiles" value="101SP01.dwg" disabled="disabled"/><label for="pdf1"><button type = "button" class = "btn btn-primary btn-sm hidden-sm hidden-xs"> PDF</button></label><br />
<input type="checkbox" name="file2" id="pdf2" class = "pdffiles" value="101SP02.dwg" /><label for="pdf2"><button type = "button" class = "btn btn-primary btn-sm hidden-sm hidden-xs"> PDF</button></label><br />
JQuery:
function pdf(source) {
$('input[name=pdffiles]').each(function(){
if(!$(this).attr('disabled'))
checkboxes[i].checked = source.checked;
};
};
当我点击 select 全部的复选框时,它仍然是 select 全部。这是以前工作的代码,select 也都是(在我进行上述更改之前):
function pdf(source) {
checkboxes = document.getElementsByClassName('pdffiles');
for(var i=0, n=checkboxes.length;i<n;i++) {
checkboxes[i].checked = source.checked;
}
}
目标是只选中未禁用的复选框。
此外,如果这有帮助,这里是运行代码时单击的复选框:
<input type="checkbox" onClick="pdf(this)" class = "hidden-xs hidden-sm">
哦,还有,我试过用 .prop 代替 .attr
下面提供的 Fiddle 代码完美运行!但我不明白为什么它不适用于我的代码:
function pdf(source) {
$('.pdffiles').not(':disabled').prop('checked', source.checked);
};
而且我没有改变其他任何东西..
肯定是其他原因启用了 select 全部,但我无法弄清楚我正在编辑的代码中的内容。
我将此问题标记为已回答,因为所提供的代码运行良好。我自己的代码中的其他内容导致 select 全部。我正在处理的代码不是我自己的,而是我的同事,所以我将不得不尝试与他一起解决这部分问题,感谢您的帮助!
您可以使用.not() with disabled-selector来排除禁用的元素,还要注意pdffiles
是一个class而不是名称
function pdf(source) {
$('input.pdffiles').not(':disabled').prop('checked', source.checked);
};
演示:Fiddle
例如:
$('.pdffiles').not(':disabled').prop('checked', true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="file1" id="pdf1" class = "pdffiles" value="101SP01.dwg" disabled="disabled"/><label for="pdf1"><button type = "button" class = "btn btn-primary btn-sm hidden-sm hidden-xs"> PDF</button></label><br />
<input type="checkbox" name="file2" id="pdf2" class = "pdffiles" value="101SP02.dwg" /><label for="pdf2"><button type = "button" class = "btn btn-primary btn-sm hidden-sm hidden-xs"> PDF</button></label><br />
在此处进行研究后,我发现了检查复选框是否被禁用的代码,我正尝试将其实现到我的代码中,但没有成功。
HTML:
<input type="checkbox" name="file1" id="pdf1" class = "pdffiles" value="101SP01.dwg" disabled="disabled"/><label for="pdf1"><button type = "button" class = "btn btn-primary btn-sm hidden-sm hidden-xs"> PDF</button></label><br />
<input type="checkbox" name="file2" id="pdf2" class = "pdffiles" value="101SP02.dwg" /><label for="pdf2"><button type = "button" class = "btn btn-primary btn-sm hidden-sm hidden-xs"> PDF</button></label><br />
JQuery:
function pdf(source) {
$('input[name=pdffiles]').each(function(){
if(!$(this).attr('disabled'))
checkboxes[i].checked = source.checked;
};
};
当我点击 select 全部的复选框时,它仍然是 select 全部。这是以前工作的代码,select 也都是(在我进行上述更改之前):
function pdf(source) {
checkboxes = document.getElementsByClassName('pdffiles');
for(var i=0, n=checkboxes.length;i<n;i++) {
checkboxes[i].checked = source.checked;
}
}
目标是只选中未禁用的复选框。
此外,如果这有帮助,这里是运行代码时单击的复选框:
<input type="checkbox" onClick="pdf(this)" class = "hidden-xs hidden-sm">
哦,还有,我试过用 .prop 代替 .attr
下面提供的 Fiddle 代码完美运行!但我不明白为什么它不适用于我的代码:
function pdf(source) {
$('.pdffiles').not(':disabled').prop('checked', source.checked);
};
而且我没有改变其他任何东西..
肯定是其他原因启用了 select 全部,但我无法弄清楚我正在编辑的代码中的内容。
我将此问题标记为已回答,因为所提供的代码运行良好。我自己的代码中的其他内容导致 select 全部。我正在处理的代码不是我自己的,而是我的同事,所以我将不得不尝试与他一起解决这部分问题,感谢您的帮助!
您可以使用.not() with disabled-selector来排除禁用的元素,还要注意pdffiles
是一个class而不是名称
function pdf(source) {
$('input.pdffiles').not(':disabled').prop('checked', source.checked);
};
演示:Fiddle
例如:
$('.pdffiles').not(':disabled').prop('checked', true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="file1" id="pdf1" class = "pdffiles" value="101SP01.dwg" disabled="disabled"/><label for="pdf1"><button type = "button" class = "btn btn-primary btn-sm hidden-sm hidden-xs"> PDF</button></label><br />
<input type="checkbox" name="file2" id="pdf2" class = "pdffiles" value="101SP02.dwg" /><label for="pdf2"><button type = "button" class = "btn btn-primary btn-sm hidden-sm hidden-xs"> PDF</button></label><br />