使用 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'
摘自文档:
Note: Do not use this method to remove native properties such as checked, disabled, or selected. This will remove the property completely and, once removed, cannot be added again to element. Use .prop() to set these properties to false instead.
事实上,我怀疑这种方法是否有许多合法用途,布尔值 props 是这样完成的,你应该将它们设置为 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 );
有时您需要禁用/启用表单元素,如输入或文本区域。Jquery 可帮助您通过将禁用属性设置为“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