协慌网

登录 贡献 社区

使用 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()作用类似:

设置 disabled 属性。

$("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'摘自文档:

注意:请勿使用此方法删除本机属性,例如已选中,已禁用或已选中。这将完全删除属性,一旦删除,就不能再次添加到元素。使用. prop()将这些属性设置为 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 通过将 disabled 属性设置为 “disabled” 来帮助您轻松完成此操作。例如:

//To disable 
  $('.someElement').attr('disabled', '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