禁用div中的所有表单元素

时间:2011-03-13 16:01:15

标签: jquery forms html field

有没有办法通过只告诉jquery / javascript中的父div名来禁用表单中的所有字段(textarea / textfield / option / input / checkbox / submit等)?

12 个答案:

答案 0 :(得分:248)

尝试使用:input选择器以及父选择器:

$("#parent-selector :input").attr("disabled", true);

答案 1 :(得分:146)

$('#mydiv').find('input, textarea, button, select').attr('disabled','disabled');

答案 2 :(得分:29)

对于jquery 1.6+,请使用.prop()代替.attr()

$("#parent-selector :input").prop("disabled", true);

$("#parent-selector :input").attr("disabled", "disabled");

答案 3 :(得分:5)

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

答案 4 :(得分:1)

我在不同的地方使用以下功能。只要使用了右选择器,就可以在表中的div或button元素中使用。只是&#34;:按钮&#34;我不会重新启用。

function ToggleMenuButtons(bActivate) {
    if (bActivate == true) {
        $("#SelectorId :input[type='button']").prop("disabled", true);
    } else {
        $("#SelectorId :input[type='button']").removeProp("disabled");
    }
}

答案 5 :(得分:1)

这行代码只会禁用所有输入元素

$('#yourdiv *').prop('disabled', true);

答案 6 :(得分:1)

如何仅使用“禁用” HTML属性来实现这一目标

<form>
 <fieldset disabled>
  <div class="row">
   <input type="text" placeholder="">
   <textarea></textarea>
   <select></select>
  </div>
  <div class="pull-right">
    <button class="button-primary btn-sm" type="submit">Submit</button>
  </div>
 </fieldset>
</form>

只需在字段集中设置“禁用”,该字段集中的所有字段都会被禁用。

$('fieldset').attr('disabled', 'disabled');

答案 7 :(得分:0)

以下将禁用所有输入,但不能将它转为btn类,并且还添加了类以覆盖禁用css。

$('#EditForm :input').not('.btn').attr("disabled", true).addClass('disabledClass');

css class

.disabledClass{
  background-color: rgb(235, 235, 228) !important;
}

答案 8 :(得分:0)

对我来说,接受的答案不起作用,因为我有一些禁用的网络隐藏字段,所以我只选择禁用可见字段

//just to save the list so we can enable fields later
var list = [];
$('#parent-selector').find(':input:visible:not([readonly][disabled]),button').each(function () {
    list.push('#' + this.id);
});

$(list.join(',')).attr('readonly', true);

答案 9 :(得分:0)

使用CSS类来防止编辑Div元素

<强> CSS:

.divoverlay
{
position:absolute;
width:100%;
height:100%;
background-color:transparent;
z-index:1;
top:0;
}

<强> JS:

$('#divName').append('<div class=divoverlay></div>');

或者在HTML标记中添加类名。 它将阻止编辑Div元素。

答案 10 :(得分:0)

仅文本类型

$(".form-edit-account :input[type=text]").attr("disabled", "disabled");

仅密码类型

$(".form-edit-account :input[type=password]").attr("disabled", "disabled");

仅电子邮件类型

$(".form-edit-account :input[type=email]").attr("disabled", "disabled");

答案 11 :(得分:0)

如果div中的表单仅包含表单输入元素,则此简单查询将禁用 form标记中的每个元素:

<div id="myForm">
    <form action="">
    ...
    </form>
</div>

但是,除了在form中输入元素之外,它还会禁用,因为它的效果只能在输入类型的元素上看到,因此主要适用于每种类型的表单!

$('#myForm *').attr('disabled','disabled');