使用jQuery禁用/启用输入?

$input.disabled = true;

$input.disabled = "disabled";

这是标准方法吗?相反,如何启用禁用的输入?


答案 1

j查询 1.6+

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

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

jQuery 1.5 及更低版本

该函数不存在,但 .attr() 执行类似的操作:.prop()

设置禁用的属性。

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

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

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

在任何版本的jQuery中

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

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

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


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

注: 请勿使用此方法删除本机属性,如选中、禁用或选定。这将完全删除该属性,并且一旦删除,就无法再次添加到元素中。请改用 .prop() 将这些属性设置为 false。

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


答案 2

只是为了新的惯例,并使其适应未来(除非ECMA6(????)发生巨大变化):

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

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