禁用div内的所有表单元素
有没有办法通过在jquery / javascript中只告诉父div的名称来禁用所有字段(textarea / textfield /选项/input/checkbox/提交等)在窗体中?
尝试使用:input
select器,以及父select器:
$("#parent-selector :input").attr("disabled", true);
$('#mydiv').find('input, textarea, button, select').attr('disabled','disabled');
对于jQuery .prop()
,使用.prop()
而不是.attr()
,
$("#parent-selector :input").prop("disabled", true);
要么
$("#parent-selector :input").attr("disabled", "disabled");
$(document).ready(function () { $('#chkDisableEnableElements').change(function () { if ($('#chkDisableEnableElements').is(':checked')) { enableElements($('#divDifferentElements').children()); } else { disableElements($('#divDifferentElements').children()); } }); }); function disableElements(el) { for (var i = 0; i < el.length; i++) { el[i].disabled = true; disableElements(el[i].children); } } function enableElements(el) { for (var i = 0; i < el.length; i++) { el[i].disabled = false; enableElements(el[i].children); } }
我在不同的地方使用下面的函数。 只要使用了正确的select器,就可以在表格中的div或button元素中工作。 只是“:button”不会重新启用我。
function ToggleMenuButtons(bActivate) { if (bActivate == true) { $("#SelectorId :input[type='button']").prop("disabled", true); } else { $("#SelectorId :input[type='button']").removeProp("disabled"); } }
以下将禁用所有的input,但不能使它btn类,也添加类来覆盖禁用css。
$('#EditForm :input').not('.btn').attr("disabled", true).addClass('disabledClass');
css类
.disabledClass{ background-color: rgb(235, 235, 228) !important; }
对我来说,接受的答案没有工作,因为我有一些asp网隐藏的领域也被禁用,所以我只select禁用可见的领域
//just to save the list so we can enable fields later var list = []; $('#parent-selector :input:visible:not([readonly]:not([disabled]),button').each(function () { list.push('#' + this.id); }); $(list.join(',')).attr('readonly', true);