用 jQuery 禁用/启用输入?

$input.disabled = true;

或者

$input.disabled = "disabled";

哪一种是标准的方式? 反过来,你如何启用一个禁用的输入?

2537670 次浏览

jQuery 1.6+

要更改disabled属性,您应该使用#1函数。

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

jQuery 1.5及以下

.prop()函数不存在,但#1类似:

设置禁用属性。

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

要再次启用,正确的方法是使用#0

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

在任何版本的jQuery中

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

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

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


备注:在1.6中,有一个#0方法听起来很像removeAttr(),但它不应该被使用在原生属性上,如'disabled'留档摘录:

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

事实上,我怀疑这种方法有很多合法的用途,布尔道具是以这样一种方式完成的,你应该将它们设置为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可以帮助您轻松地将禁用属性设置为“禁用”。例如:

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

如果您只想反转当前状态(如切换按钮行为):

$("input").prop('disabled', ! $("input").prop('disabled') );

您可以将其放在代码中的某个全局位置:

$.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();
<html><body>
Name: <input type="text" id="myText">


<button onclick="disable()">Disable Text field</button><button onclick="enable()">Enable Text field</button>
<script>function disable() {document.getElementById("myText").disabled = true;}function enable() {document.getElementById("myText").disabled = false;}</script>
</body></html>

在jQuery Mobile中:

对于禁用

$('#someselectElement').selectmenu().selectmenu('disable').selectmenu('refresh', true);$('#someTextElement').textinput().textinput('disable');

对于启用

$('#someselectElement').selectmenu().selectmenu('enable').selectmenu('refresh', true);$('#someTextElement').textinput('enable');

我使用@gnarf回答并将其添加为函数

   $.fn.disabled = function (isDisabled) {if (isDisabled) {this.attr('disabled', 'disabled');} else {this.removeAttr('disabled');}};

然后像这样使用

$('#myElement').disable(true);

对输入类型禁用true:

在特定输入类型的情况下(例。文本类型输入

$("input[type=text]").attr('disabled', true);

对于所有类型的输入类型

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

2018年更新:

现在不需要jQuery了,自从document.querySelectordocument.querySelectorAll(对于多个元素)完成与$几乎完全相同的工作以来已经有一段时间了,加上更明确的getElementByIdgetElementsByClassNamegetElementsByTagName

禁用一个“输入复选框”类的字段

document.querySelector('.input-checkbox').disabled = true;

或多个元素

document.querySelectorAll('.input-checkbox').forEach(el => el.disabled = true);

2018年,没有JQuery(ES6)

禁用所有input

[...document.querySelectorAll('input')].map(e => e.disabled = true);

id="my-input"禁用input

document.getElementById('my-input').disabled = true;

问题是使用JQuery,仅供参考。

您可以使用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启用或禁用任何元素的方式。

禁用:

$('input').attr('readonly', true); // Disable it.$('input').addClass('text-muted'); // Gray it out with bootstrap.

启用:

$('input').attr('readonly', false); // Enable it.$('input').removeClass('text-muted'); // Back to normal color with bootstrap.

像这样使用,

 $( "#id" ).prop( "disabled", true );
$( "#id" ).prop( "disabled", false );

这对我有用

$("#values:input").attr("disabled",true);$("#values:input").attr("disabled",false);

办法4(这是野生编码器答案的扩展)

txtName.disabled=1     // 0 for enable
<input id="txtName">

禁用输入字段的另一种方法是使用jQuery和css,如下所示:

jQuery("#inputFieldId").css({"pointer-events":"none"})

要启用相同的输入,代码如下:

jQuery("#inputFieldId").css({"pointer-events":""})