24
var disableSelection = function(){
    $("#elementId").attr("disabled","disabled");    
};

var enableSelection = function(){
    $("#elementId").removeAttr("disabled");
};

我有以下要求:

  1. 禁用 SELECT 元素以限制用户选择选项
  2. 已禁用的 SELECT 元素已经选择了一些 OPTION 元素
  3. 在提交事件时启用禁用的 SELECT 元素以保存选定的值

添加属性“禁用”适用于 IE。然而,当我尝试使用 jQuery revomeAttr() 方法删除属性时,而不是删除属性:

  1. 方法将“禁用”属性添加到先前启用的 SELECT 元素
  2. 方法不会删除“禁用”属性
4

3 回答 3

55

使用.prop而不是.attr影响元素的禁用状态:

var disableSelection = function(){
    $("#elementId").prop("disabled", true);    
};

var enableSelection = function(){
    $("#elementId").prop("disabled", false);
};

有关更多信息,请参阅.prop() 与 .attr()

于 2012-04-20T08:00:32.820 回答
4

你可以removeProp('disabled')改用。它对我有用,removeAttr('disabled')但没有。

于 2015-04-03T00:26:00.217 回答
1

Jquery Docs 说,关于 .removeProp():

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

补充说明:

在 Internet Explorer 9 之前的版本中,如果不删除属性(使用 > .removeProp()) 在从文档中删除 DOM 元素之前。要在 DOM 对象上安全地设置值而不会发生内存泄漏,请使用 .data()。

于 2016-06-27T20:57:07.650 回答