禁用div中的所有表单元素

ami*_*ash 155 html forms jquery field

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

And*_*ker 256

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

$("#parent-selector :input").attr("disabled", true);
Run Code Online (Sandbox Code Playgroud)

  • 引用[jQuery](http://api.jquery.com/input-selector/):_因为:input是一个jQuery扩展而不是CSS规范的一部分,查询使用:input无法利用由提供的性能提升原生DOM querySelectorAll()方法.要在使用时获得最佳性能:输入选择元素,首先使用纯CSS选择器选择元素,然后使用.filter(":input")._ (7认同)
  • 我也想禁用 <a>...我的 <a> 也有 onclick (3认同)
  • @acme:同意100%,但问题没有提供任何关于我可能过滤的选择器的提示.我给出的唯一信息是用户必须能够使用*parent`div`名称来实现它,就是这样.如果有更多信息,我可以提出更有效的解决方案. (2认同)
  • 使用 .prop() 代替 .attr() (jquery 1.6 以上) (2认同)

Tre*_*vor 150

$('#mydiv').find('input, textarea, button, select').attr('disabled','disabled');
Run Code Online (Sandbox Code Playgroud)

  • 它应该是('input,textarea,button')所有选择器都应引用一组引号.http://api.jquery.com/multiple-selector/按照您发送多个参数的方式进行操作. (4认同)
  • 这只会找到你的输入,忽略textareas和按钮.:输入选择器是可行的方法,但是如果你想明确地列出它们,你需要使用`$('#mydiv').find('input,textarea,button')`. (2认同)
  • 适用于tr或div的任何id等等真的很酷的一行代码 (2认同)

Opt*_*ime 32

对于jquery 1.6+,使用.prop()而不是.attr(),

$("#parent-selector :input").prop("disabled", true);
Run Code Online (Sandbox Code Playgroud)

要么

$("#parent-selector :input").attr("disabled", "disabled");
Run Code Online (Sandbox Code Playgroud)

  • 你是对的,但有时候支撑工作,有些时候不工作,特别是因为复选框和radiobutton (2认同)

Sye*_*bas 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);
        }
    }
Run Code Online (Sandbox Code Playgroud)


Sam*_*imy 5

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

$('#yourdiv *').prop('disabled', true);
Run Code Online (Sandbox Code Playgroud)


小智 5

如何仅使用 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>
Run Code Online (Sandbox Code Playgroud)

只需将 disabled 放在 fieldset 中,该 fieldset 内的所有字段都会被禁用。

$('fieldset').attr('disabled', 'disabled');
Run Code Online (Sandbox Code Playgroud)