禁用 / 启用 jQuery 输入?

$input.disabled = true;

要么

$input.disabled = "disabled";

哪种标准方法?相反,如何启用禁用的输入?

答案

jQuery 1.6 以上

若要更改disabled属性,应使用.prop()函数。

$("input").prop('disabled', true);
$("input").prop('disabled', false);

jQuery 1.5 及以下

.prop()函数不存在,但是.attr()做类似的.prop()

设置禁用的属性。

$("input").attr('disabled','disabled');

要再次启用,正确的方法是使用.removeAttr()

$("input").removeAttr('disabled');

在任何版本的 jQuery 中

您始终可以依赖实际的 DOM 对象,并且如果只处理一个元素,它可能会比其他两个选项快一点:

// assuming an event handler thus 'this'
this.disabled = true;

使用.prop().attr()方法的优点是,可以为一堆选定项设置属性。


注意:在 1.6 中,有一个.removeProp()方法听起来很像removeAttr() ,但不应在文档中的'disabled'摘录等本机属性上使用

注意:请勿使用此方法删除本机属性,例如选中,禁用或选中。这将完全删除该属性,并且一旦删除,就不能再次将其添加到 element 中。使用. prop()将这些属性设置为 false。

实际上,我怀疑这种方法有很多合法用途,布尔道具的使用方式应该设置为 false,而不是像 1.5 中的 “属性” 对应那样 “删除” 它们。

只是为了新的约定和使其适应性发展(除非 ECMA6(????)发生了重大变化:

$(document).on('event_name', '#your_id', function() {
    $(this).removeAttr('disabled');
});

$(document).off('event_name', '#your_id', function() {
    $(this).attr('disabled','disabled');   
});
// Disable #x
    $( "#x" ).prop( "disabled", true );
    // Enable #x
    $( "#x" ).prop( "disabled", false );

有时您需要禁用 / 启用表单元素,例如 input 或 textarea。 jQuery 通过将 disable 属性设置为 “disabled”,可以轻松实现此目的。例如:

//To disable 
  $('.someElement').attr('disabled', 'disabled');

要启用禁用的元素,您需要从此元素中删除 “disabled” 属性或将其字符串清空。例如:

//To enable 
$('.someElement').removeAttr('disabled');

// OR you can set attr to "" 
$('.someElement').attr('disabled', '');

请参阅: http : //garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html

$("input")[0].disabled = true;

要么

$("input")[0].disabled = false;

您可以将其放在代码的全局位置:

$.prototype.enable = function () {
    $.each(this, function (index, el) {
        $(el).removeAttr('disabled');
    });
}

$.prototype.disable = function () {
    $.each(this, function (index, el) {
        $(el).attr('disabled', 'disabled');
    });
}

然后,您可以编写如下内容:

$(".myInputs").enable();
$("#otherInput").disable();

如果只想反转当前状态(如切换按钮行为):

$("input").prop('disabled', ! $("input").prop('disabled') );

使用它们的方法有很多,您可以启用 / 禁用任何元素

方法 1

$("#txtName").attr("disabled", true);

方法 2

$("#txtName").attr("disabled", "disabled");

如果您使用的是 jQuery 1.7 或更高版本,请使用 prop()而不是 attr()。

$("#txtName").prop("disabled", "disabled");

如果您希望启用任何元素,则只需做与禁用它相反的操作即可。但是,jQuery 提供了另一种删除任何属性的方法。

方法 1

$("#txtName").attr("disabled", false);

方法 2

$("#txtName").attr("disabled", "");

方法 3

$("#txtName").removeAttr("disabled");

同样,如果您使用的是 jQuery 1.7 或更高版本,请使用 prop()而不是 attr()。那是。这是使用 jQuery 启用或禁用任何元素的方式。

2018 年更新:

现在已经不需要 jQuery 了,已经有一段时间了,因为document.querySelectordocument.querySelectorAll (用于多个元素)几乎与 $ 完全相同,另外还有更明确的getElementByIdgetElementsByClassNamegetElementsByTagName

禁用 “输入复选框” 类的一个字段

document.querySelector('.input-checkbox').disabled = true;

或多个元素

document.querySelectorAll('.input-checkbox').forEach(el => el.disabled = true);

您可以使用 jQuery prop()方法来禁用或启用表单元素或使用 jQuery 动态控制。 prop()方法需要 jQuery 1.6 及更高版本。

例:

<script type="text/javascript">
        $(document).ready(function(){
            $('form input[type="submit"]').prop("disabled", true);
            $(".agree").click(function(){
                if($(this).prop("checked") == true){
                    $('form input[type="submit"]').prop("disabled", false);
                }
                else if($(this).prop("checked") == false){
                    $('form input[type="submit"]').prop("disabled", true);
                }
            });
        });
    </script>

对输入类型禁用 true:

在特定输入类型的情况下( 例如,文本类型输入

$("input[type=text]").attr('disabled', true);

对于所有输入类型

$("input").attr('disabled', true);