$input.disabled = true;
要么
$input.disabled = "disabled";
哪种标准方式?而且,相反,如何启用禁用输入?
$input.disabled = true;
要么
$input.disabled = "disabled";
哪种标准方式?而且,相反,如何启用禁用输入?
要改变 disabled
您应该使用的财产 .prop()
功能。
$("input").prop('disabled', true);
$("input").prop('disabled', false);
该 .prop()
功能不存在,但是 .attr()
类似的:
设置disabled属性。
$("input").attr('disabled','disabled');
要再次启用,请使用正确的方法 .removeAttr()
$("input").removeAttr('disabled');
你总是可以依赖实际的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
$("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') );
2018年更新:
现在没有必要使用jQuery,从那以后就已经有一段时间了 document.querySelector
要么 document.querySelectorAll
(对于多个元素)与$几乎完全相同的工作,加上更明确的工作 getElementById
, getElementsByClassName
, getElementsByTagName
禁用“input-checkbox”类的一个字段
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>
使用它们有几种方法可以启用/禁用任何元素 :
方法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启用或禁用任何元素的方法。
我使用@gnarf回答并将其添加为函数
$.fn.disabled = function (isDisabled) {
if (isDisabled) {
this.attr('disabled', 'disabled');
} else {
this.removeAttr('disabled');
}
};
然后像这样使用
$('#myElement').disable(true);
禁用所有 input
:
[...document.querySelectorAll('input')].map(e => e.disabled = true);
禁用 input
同 id="my-input"
document.getElementById('my-input').disabled = true;
问题是 同 JQuery,这只是FYI。